什么是递归函数?
递归的定义——在一个函数里再调用这个函数本身
递归的最大深度——997
测试递归最大深度
def foo(n): print(n) n += 1 foo(n) foo(1)
最后输出的结果为997,由此可见递归最大深度为997
正常情况下,递归最大深度为997,但是如果需要更多次递归该怎么办,我们可以通过以下代码实现
import sys print(sys.setrecursionlimit(100000))
虽然我们可以自己设定递归最大深度,但是如果在递归997次后还解决不了问题的话,我们就应该思考是不是自己方法选错了,所以997次一般肯定够大家使用了。
现在我们对递归有了一定的了解,那么在什么情况下可以使用递归函数呢?
既然递归的定义就是在一个函数内部调用这个函数本身,我们不难想到,在处理一些层次比较分明且需要多次循环是的问题时就可以使用递归函数下面就以三级菜单为例深刻认识一下递归的使用方法。
menu
1 def threeLM(dic): 2 while True: 3 for key in dic:print(key) 4 k = input('input>>').strip() 5 if k == 'b' or k == 'q':return k 6 elif k in dic.keys() and dic[k]: 7 ret = threeLM(dic[k]) 8 if ret == 'q': return 'q' 9 10 threeLM(menu)