我所了解的递归

所谓递归,就是当你需要完成某个功能时发现下一层次的需求跟上一层次的需求相同,相同到如果完成整个功能可能需要写无数相同代码段

这个时候我们可以不可以使用while循环或者多层循环嵌套呢,可以,但是它并不能完美解决所有要求,贴出代码:

 

使用该字典根据输入要查询的城市 输出他的二级城市或地点

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

以上借用的同学的代码,普通循环嵌套

 

这是递归

 1 def menu1(menu):
 2     while True:
 3         if len(menu)!=0:
 4             for re in menu :
 5                 print(re,end='\t')
 6             cmd = input('\n>>:').strip()
 7             if cmd=='back':
 8                 break
 9             elif cmd not in menu.keys():
10                 print('请重新选择')
11                 continue
12             menu2 = menu[cmd]
13             menu1(menu2)
14         else:
15             print('到底了,重新选一个吧')
16             break
17     return

一下两张图片来自于 

 

 

posted @ 2017-07-31 15:52  xiesibo  阅读(109)  评论(0编辑  收藏  举报