当前位置:首页 > Python教程 > python技巧

python 递归

迭代是人,递归是神。    —— L.Peter Deutsch

定义:函数在执行的过程中调用自己。

 

递归算法一般用于解决三类问题:

  1 数据的另一是按照递归定义的。比如斐波那契函数

  2 问题解法按照递归算法实现。比如回溯。

  3 数据的数据类型是按照递归定义的。比如树的遍历,图的搜索。

 

递归的应用

  三级菜单  

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

 

            #
             n=0
            def
             foo(dic):
    
            while
             True:
        
            for key in dic:
            print(key)
        cmd=input(‘==>‘)
        if cmd==‘b‘:
            breakelif cmd==‘q‘:
            return‘q‘elif cmd in dic:
            res=foo(dic[cmd])       
            # global n# n+=1# print(‘第{}次:‘.format(n),res)if res==‘q‘:                                #res 是取下一级的返回值,只有cmd==‘q‘,才有返回值‘q’。注释掉的代码试了一下,break退出一层循环是res是None。用return实现了输入q,每一层都退出了。
return‘q‘ #这两行代码我觉的是精髓。 foo(menu)

  实现了一级一级打印,按 b 返回上一级,按 q 直接退出。

原文:http://www.cnblogs.com/654321cc/p/7485360.html


【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!