递归: 在函数中调用自身
- 当要使用递归求某个值得时候就找规律从后面往前面推导
- 注意: 当外部要接收递归函数的返回值的时候,递归函数里面的执行自身函数前面一点要加上 return 否则会 报错 或者 None -> 前提是要接收递归函数的返回值
- 如果递归次数太多,就不适合使用递归来解决问题
- 最大的递归深度默认是997/998,是Python从内存角度出发做的限制
# 解除递归限制
import sys
sys.setrecursionlimit(1000000)
n = 0
def story():
global n
n += 1
print(n)
story()
story()
- 递归求和 -> 1 + 2 + 3 + 4 + 5 -> 找规律从后面往前面推导
def plus(num):
if num <= 1:
return 1
else:
return num + plus(num - 1)
r_data = plus(3)

练习
- 斐波那契 -> 1, 1, 2, 3, 5, 8, 13 -> 求第n个斐波那契是多少
def fibonacci(num, i=2, p=1, r=1):
if i >= num:
return r
else:
return fibonacci(num, i=i + 1, p=r, r=p + r)
print(fibonacci(3))
def fib(n):
if n == 1 or n==2:
return 1
return fib(n-1) + fib(n-2)
print(fib(50))
- 阶乘 -> 1 * 2 * 3 * 4 * 5 * 6 -> 找规律从后面往前面推导
def multiply(num):
if num <= 1:
return 1
else:
return num * multiply(num - 1)
print(multiply(5))