1. 程式人生 > >python 遞歸

python 遞歸

elif put 過程 pan input 執行 clas python 三級

叠代是人,遞歸是神。    —— L.Peter Deutsch

定義:函數在執行的過程中調用自己。

遞歸算法一般用於解決三類問題:

  1 數據的另一是按照遞歸定義的。比如斐波那契函數

  2 問題解法按照遞歸算法實現。比如回溯。

  3 數據的數據類型是按照遞歸定義的。比如樹的遍歷,圖的搜索。

遞歸的應用

  三級菜單  

  

menu = {
    北京: {
        海澱: {
            五道口: {
                soho: {},
                網易: {},
                
google: {} }, 中關村: { 愛奇藝: {}, 汽車之家: {}, youku: {}, }, 上地: { 百度: {}, }, }, 昌平: { 沙河: { 老男孩: {},
北航: {}, }, 天通苑: {}, 回龍觀: {}, }, 朝陽: {}, 東城: {}, }, 上海: { 閔行: { "人民廣場": { 炸雞店: {} } }, 閘北: { 火車戰: { 攜程: {} } },
浦東: {}, }, 山東: {}, }

# n=0
def foo(dic):
    while True:
        for key in dic:
            print(key)
        cmd=input(==>)
        if cmd==b:
            break
        elif cmd==q:
            return q
        elif cmd in dic:
            res=foo(dic[cmd])       
            # global n
            # n+=1
            # print(‘第{}次:‘.format(n),res)
            if res==q:                                #res 是取下一級的返回值,只有cmd==‘q‘,才有返回值‘q’。註釋掉的代碼試了一下,break退出一層循環是res是None。用return實現了輸入q,每一層都退出了。
return q‘ #這兩行代碼我覺的是精髓。 foo(menu)

  實現了一級一級打印,按 b 返回上一級,按 q 直接退出。

python 遞歸