递归函数

概念

    递归函数就是在函数内部调用自己.

    递归最大不超过 1000 层.

优点: 会让代码变简单.

缺点: 占内存. 

代码实现

测试递归最大深度

n = 0
def story():
    global n
    n +=1
    print(n)
    story()

story()

修改递归最大深度

# import sys
# sys.setrecursionlimit(1000000)

求价格

# A 多少钱?         n = 1    m(1) + 2    = m(n+1)+2
# A 比 B 贵两元     n = 2     m(3)+ 2    = m(n+1)+2
# B 比 C 贵两元     n = 3     m(4)+ 2    = m(n+1)+2
# C 比 D 贵两元     n = 4     m(4)       = 16
# D 16元

def func(n):
    if n == 4:
        return 16
    elif n > 0 and n <4:
        return func(n+1) + 2
print(func(1))

三级菜单

menu = {
    '北京': {
        '海淀': {
            '五道口': {
                'soho': {},
                '网易': {},
                'google': {}
            },
            '中关村': {
                '爱奇艺': {},
                '汽车之家': {},
                'youku': {},
            },
            '上地': {
                '百度': {},
            },
        },
        '昌平': {
            '沙河': {
                '老男孩': {},
                '北航': {},
            },
            '天通苑': {},
            '回龙观': {},
        },
        '朝阳': {},
        '东城': {},
    },
    '上海': {
        '闵行': {
            "人民广场": {
                '炸鸡店': {}
            }
        },
        '闸北': {
            '火车战': {
                '携程': {}
            }
        },
        '浦东': {},
    },
    '山东': {},
}

def threeLM(dic):
    while True:
        for k in dic:print(k)
            key = input('input>>').strip()
            if key == 'b' or key == 'q':return key
            elif key in dic.keys() and dic[key]:
                ret = threeLM(dic[key])
                if ret == 'q': return 'q'


threeLM(menu)

  

posted @ 2020-07-24 01:13  闫世成  阅读(62)  评论(0编辑  收藏  举报