遞迴:簡單來說就是自己呼叫自己
這裡我們又要舉個例子來說明遞迴能做的事情。
例一:現在你們問我,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...