函数进阶-递归
一丶什么是函数递归 函数的嵌套调用是:函数嵌套函数。函数的递归调用:它是一种特殊的嵌套调用,但是它在调用一个函数的过程中,又直接或间接地调用了它自身。 def foo(): print('from foo') foo() foo() # 进入死循环 如果递归函数不断地调用函数自身,那么这个递归函数将会进入一个死循环,因此我们应该给递归函数一个明确的结束条件。 1.1 直接调用 直接调用指的是:直接在函数内部调用函数自身。 import sys print(f"最大递归层数: {sys.getrecursionlimit()}") 最大递归层数: 3000 import sys # 修改递归层数 sys.setrecursionlimit(10000) def foo(n): print('from foo',n) foo(n+1) foo(0) 1.2 间接调用 间接调用指的是:不在原函数体内调用函数自身,而是通过其他的方法间接调用函数自身。 def bar(): print('from bar') foo() def foo(): print('from foo') bar() bar() 递归必须要有两个明确的阶段: * 递推:一层一层递归调用下去,进入下一层递归的问题规模都将会减小 * 回溯:递归必须要有一个明确的结束条件,在满足该条件开始一层一层回溯。