递归函数
- 递归函数 : 在函数的调用自身
- 递归边界 : 退出递归的终止条件
- 例1,函数func如果没有设备递归边界,就对达到python的最大深度1000从而报错
def func(n):
if n == 1: # 递归边界
return
print(n)
func(n-1)
func(10)
2,例2.累加
def func_add(n):
#判断n是否等于1
if n ==1:
return 1
else: #
return func_add(n-1) + n
- 获取最大递归次数
import sys
print(sys.getrecursionlimit())
- 设置最大递归次数
sys.setrecursionlimit(5000)
缓存装饰器
通过缓存装饰器可以将相同调用的结果给缓存起来,方便下次使用大大减少了缓存的压力
-
@lru_cache
例如;爬楼梯的计算,100阶楼梯,一次爬1阶,2阶,3阶的有多少种方法
from functools import lru_cache
@lru_cache(maxsize=128)
def function_999(n):
if n == 1:
return 1
if n == 2:
return 2
if n == 3:
return 4
else:
return function_999(n - 1) + function_999(n - 2) + function_999(n - 3)
print(function_999(100))