天天看點

遞歸 人了解循環 神了解遞歸

遞歸的含義:在一個函數裡再調用這個函數本身,這就是遞歸。

在Python裡遞歸的最大限度是997,最大遞歸的限度可以修改

import sys
print(sys.setrecursionlimit(100000)      

遞歸與三級菜單

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

def three(menu):
    while True:
        for i in menu:
            print(i)
        name = input('your name : ')
        if name in menu:
            three(menu[name])
        elif name == 'q':
            break
        else:
            print('不存在的 ')
            continue

three(menu)      

二分位法 與遞歸

l = [2,4,5,7,8,9,12,13,14,15,17,18,19,23,25,27,29]

def erf(l,num):
    mid = len(l)//2
    if l[mid] > num:
        l = l[:mid]
        return erf(l,num)
    elif l[mid] < num:
        l = l[mid+1:]
        return erf(l,num)
    else:
        return l[mid]

print(erf(l,18))      

二分位法與遞歸進階版本

l = [2,4,5,7,8,9,12,13,14,15,17,18,19,23,25,27,29]

def erf(l,num,start= 0,end = 0):
    if start < end:
        mid = (start + end)//2
        if l[mid] > num:
            end = mid
            return erf(l,num,start,end)
        elif l[mid] < num:
            start = mid + 1
            return erf(l,num,start,end)
        else:
            return mid
    else:
        print('沒有這個值!!')

print(erf(l,25,start = 0,end = len(l)-1))      

遞歸 與猜年齡

Alex 比egon 大2歲

egon 比袁浩大2歲

袁浩比哪吒大2歲

娜紮比太白大2歲

太白是40歲,請問Alex是多少歲?用遞歸函數表達

age1 = 40
age2 = nezha
age3 = yuanhao
age4 = egon
age5 = alex
def age(n):
    if n == 1:
        return 40
    else:
        ret = age(n-1)
        return (ret +2)

print(age(5))      

轉載于:https://www.cnblogs.com/niehaidong111/p/7263519.html