递归 人理解循环 神理解递归

递归的含义:在一个函数里再调用这个函数本身,这就是递归。

在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))


最新免费视频: http://www.pythonav.com/all/10000.html
原文地址:https://www.cnblogs.com/niehaidong111/p/7263519.html