python 递归
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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‘: break elif 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 直接退出。
以上是关于python 递归的主要内容,如果未能解决你的问题,请参考以下文章