在函数中调用本函数. 就是递归

def func():
  print(\"我是谁\")
  func()

func()

在python中最大递归深度为1000:

In[26]: import sys

In[27]: sys.getrecursionlimit()           # 虽然我们查询到的结果是1000,但是实际上却跑不到1000,通常是998或者997
Out[27]: 1000

递归的应用:计算斐波那契数列 f(0) = 1 f(1) = 1 f(n) = f(n-1) + f(n-2)

In[35]: def fib(n):
   ...:     if n == 0:
   ...:         return 1
   ...:     if n == 1:
   ...:         return 1
   ...:     return fib(n-1) + fib(n-2)
   ...: 

In[36]: fib(5)
Out[36]: 8

In[37]: fib(10)
Out[37]: 89

总结:

  • 递归函数总是涉及到压栈和出栈的过程
  • 递归函数总是压栈,知道遇到退出条件,然后出栈
  • Python中递归函数有深度限制,可以通过sys.getrecursionlimit()得到深度限制,可以通过sys.setrecursionlimit调整递归深度限制
  • 递归函数在Python非常慢,并且有深度限制,所以 因尽量避免使用递归
收藏 打印