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


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

    在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
  • 相关阅读:
    如何将数组初始化为全0?
    什么是优先级队列(priority queue)?
    C语言中指针的指针是如何工作的?
    什么是队列(Queue)?
    理解*ptr++
    【Luogu】P4172水管局长(LCT)
    【Luogu】P4159迷路(矩阵优化)
    【Luogu】P3971Alice And Bob(贪心)
    【Luogu】P3211XOR和路径(高斯消元)
    【Luogu】P2445动物园(最大流)
  • 原文地址:https://www.cnblogs.com/niehaidong111/p/7263519.html
Copyright © 2020-2023  润新知