日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

函数递归

發(fā)布時(shí)間:2025/4/14 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 函数递归 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

遞歸:簡(jiǎn)單來(lái)說(shuō)就是自己調(diào)用自己

這里我們又要舉個(gè)例子來(lái)說(shuō)明遞歸能做的事情。

例一:

現(xiàn)在你們問(wèn)我,alex老師多大了?我說(shuō)我不告訴你,但alex比 egon 大兩歲。

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

你又問(wèn)武sir,武sir也不告訴你,他說(shuō)他比金鑫大兩歲。

那你問(wèn)金鑫,金鑫告訴你,他40了。。。

這個(gè)時(shí)候你是不是就知道了?alex多大?

1金鑫  40
2武sir  42
3egon  44
4alex   46

你為什么能知道的?

首先,你是不是問(wèn)alex的年齡,結(jié)果又找到egon、武sir、金鑫,你挨個(gè)兒?jiǎn)栠^(guò)去,一直到拿到一個(gè)確切的答案,然后順著這條線(xiàn)再找回來(lái),才得到最終alex的年齡。這個(gè)過(guò)程已經(jīng)非常接近遞歸的思想。我們就來(lái)具體的我分析一下,這幾個(gè)人之間的規(guī)律。

age(5) = age(4) + 2
age(4) = age(3) + 2 age(3) = age(2) + 2 age(2) = age(1) + 2 age(1) = 40

那這樣的情況下,我們的函數(shù)應(yīng)該怎么寫(xiě)呢?

?

__author__ = 'Administrator' def f(n):if n==1:return 40else:ret=f(n-1)+2return retprint(f(5))''' n=5 return f(4)+2=f(3)+4=f(2)+6=f(1)+8 '''
遞歸實(shí)現(xiàn)二分算法

如果有這樣一個(gè)列表,讓你從這個(gè)列表中找到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.簡(jiǎn)單版本 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)//2if l[mid]>aim:return f(l[0:mid],aim)elif l[mid]<aim:return f(l[mid+1:],aim)else:return l[mid]print(f(l,66))

2.升級(jí)版本,找到位置

?

__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)//2if l[mid]>aim:return f(l,aim,start,mid-1)elif l[mid]<aim:return f(l,aim,mid+1,end)elif l[mid]==aim:return midelse:print("找不到")print(f(l,66,0,len(l)-1))

遞歸函數(shù)與三級(jí)菜單

menu = {'北京': {'海淀': {'五道口': {'soho': {},'網(wǎng)易': {},'google': {}},'中關(guān)村': {'愛(ài)奇藝': {},'汽車(chē)之家': {},'youku': {},},'上地': {'百度': {},},},'昌平': {'沙河': {'老男孩': {},'北航': {},},'天通苑': {},'回龍觀': {},},'朝陽(yáng)': {},'東城': {},},'云南': {'昆明': {"官渡區(qū)": {'阿拉村':{},'大板橋':{},'官渡廣場(chǎng)':{},'關(guān)上':{}},"五華區(qū)":{},'呈貢':{}},'曲靖': {'宣威': {'美幻廣場(chǎng)': {},'宛水公園': {},'東山': {}},'麒麟?yún)^(qū)': {'麒麟公園': {},'珠江源廣場(chǎng)': {},'南城門(mén)廣場(chǎng)': {}},'沾益區(qū)': {'玉林山水': {},'小花園': {},},},'玉溪': {'紅塔區(qū)': {'紅塔集團(tuán)': {},'聶耳廣場(chǎng)': {}},'澄江縣': {'撫仙湖': {},'黃金海岸': {},},'通海縣': {'銅鍋飯': {},'石鍋魚(yú)': {},}},},'山東': {}, } def threeLM(dic):while True:for k in dic:print(k)key = input('input>>').strip()if key == 'b' or key == 'q':return keyelif 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]) :continuethreeLM(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)

?

轉(zhuǎn)載于:https://www.cnblogs.com/ctztake/p/7265163.html

總結(jié)

以上是生活随笔為你收集整理的函数递归的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。