递推算法
递推思想
- 找到递推关系式
- 将复杂问题分解为若干步骤的简单运算
一般步骤
- 根据题目确定数据项,确定递推关系式
- 根据递推关系式设计递推程序;
- 根据题目找到递推的终点;
- 单次查询可以不进行存储,多次查询都要进行存储;
- 按要求输出答案即可。
递归算法
核心:分而治之,将复杂过程分解为规模较小的同类问题,通过解决若干小问题,进而解决整个复杂问题。
在自己函数中调用自己
例:斐波那契数列
cnt = 0# 统计执行了多少次递归
def fib(n): #递归函数
global cnt
cnt +=1
if n == 1or n ==2:
#到达中止条件,即最小问题
return 1
return fib(n-1) + fib(n -2)
#递归调用了自己两次,复杂度O(2^n)
print(fib(20))
print(cnt)