zoukankan      html  css  js  c++  java
  • 递归 人理解循环 神理解递归

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

    在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
  • 相关阅读:
    Linux常用命令
    全文搜索服务器solr
    非关系型数据库之redis
    springMVC流程
    浅谈spring框架的控制反转和依赖注入
    Java基础之数组
    Java基础之方法
    跨域访问接口,传递参数
    Centos 6无法使用yum
    内网穿透工具:钉钉HTTP内网穿透使用与讲解
  • 原文地址:https://www.cnblogs.com/niehaidong111/p/7263519.html
Copyright © 2011-2022 走看看