python函式遞迴年齡 python 函式的遞迴

2021-10-12 11:37:00 字數 2779 閱讀 7351

遞迴:簡單來說就是自己呼叫自己

這裡我們又要舉個例子來說明遞迴能做的事情。

例一:現在你們問我,alex老師多大了?我說我不告訴你,但alex比 egon 大兩歲。

你想知道alex多大,你是不是還得去問egon?egon說,我也不告訴你,但我比武sir大兩歲。

你又問武sir,武sir也不告訴你,他說他比金鑫大兩歲。

那你問金鑫,金鑫告訴你,他40了。。。

這個時候你是不是就知道了?alex多大?

金鑫武sir

egon

alex

你為什麼能知道的?

首先,你是不是問alex的年齡,結果又找到egon、武sir、金鑫,你挨個兒問過去,一直到拿到乙個確切的答案,然後順著這條線再找回來,才得到最終alex的年齡。這個過程已經非常接近遞迴的思想。我們就來具體的我分析一下,這幾個人之間的規律。

age(5) = age(4) + 2

age(4) = age(3) + 2

age(3) = age(2) + 2

age(2) = age(1) + 2

age(1) = 40

那這樣的情況下,我們的函式應該怎麼寫呢?

__author__ = 'administrator'

def f(n):

if n==1:

return 40

else:

ret=f(n-1)+2

return ret

print(f(5))

n=5 return f(4)+2=f(3)+4=f(2)+6=f(1)+8

遞迴實現二分演算法

如果有這樣乙個列表,讓你從這個列表中找到66的位置,你要怎麼做?

l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]

1.簡單版本

l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]

def f(l,aim):

mid=len(l)//2

if l[mid]>aim:

return f(l[0:mid],aim)

elif l[mid]

return f(l[mid+1:],aim)

else:

return l[mid]

print(f(l,66))

2.公升級版本,找到位置

__author__ = 'administrator'

l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]

def f(l,aim,start,end):

mid=(start+end)//2

if l[mid]>aim:

return f(l,aim,start,mid-1)

elif l[mid]

return f(l,aim,mid+1,end)

elif l[mid]==aim:

return mid

else:

print("找不到")

print(f(l,66,0,len(l)-1))

遞迴函式與**選單

menu = ,

'網易': {},

'google': {}

'中關村': ,

'汽車之家': {},

'youku': {},

'上地': ,

'北航': {},

'天通苑': {},

'回龍觀': {},

'朝陽': {},

'東城': {},

'雲南': ,

'大板橋':{},

'官渡廣場':{},

'關上':{}

"五華區":{},

'呈貢':{}

'曲靖': ,

'宛水公園': {},

'東山': {}

'麒麟區': ,

'珠江源廣場': {},

'南城門廣場': {}

'沾益區': ,

'小花園': {},

'玉溪': ,

'聶耳廣場': {}

'澄江縣': ,

'**海岸': {},

'通海縣': ,

'石鍋魚': {},

'山東': {},

def threelm(dic):

while true:

for k in dic:print(k)

key = input('input>>').strip()

if key == 'b' or key == 'q':return key

elif key in dic.keys() and dic[key]:

ret = threelm(dic[key])

if ret == 'q': return 'q'

elif (not dic.get(key)) or (not dic[key]) :

continue

threelm(menu)

def fun(s):

while true:

for k in s:

print(k)

dd=input("input>>:").strip()

if dd in s:

fun(s[dd])

elif dd=="back":

break

fun(menu)

遞迴算年齡

問題描述1 第1個人10歲,第2個人比第乙個人大3歲,第3個人比第2個人大3歲 第8個人比第7個人大3歲,那麼第8個人是多少歲?public class getage 測試 public static void main string args 問題描述2 第8個人的年齡是36歲,第7個人比第8個人...

Python 練習例項28 遞迴求年齡

題目 有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第乙個人大兩歲。最後問第乙個人,他說是10歲。請問第五個人多大?程式分析 利用遞迴的方法,遞迴分為回推和遞推兩個階段。要想知道第五個人歲數,需知道第四...

python遞迴函式例項 python遞迴函式

python遞迴函式 什麼是遞迴?遞迴,就是在函式執行中自己呼叫自己 示例 def recursion n 定義遞迴函式 print n 列印n recursion n 1 在函式的執行種呼叫遞迴 recursion 1 呼叫函式 這個函式在不斷的自己呼叫自己,每次呼叫n 1,看下執行結果 998t...