本文已参与「新人创作礼」活动,一起开启掘金创作之路。
声明:版权归本人所有,违者必究。
转载请注明来源 https://juejin.cn/post/7111942157082034212
1.1. 递推算法
1.1.1. 算法定义
递推算法是一种简单的算法,即通过已知条件,利用特定关系得出中间推论,直至得到结果的算法。
1.1.2. 基本思想
递推算法分为顺推和逆推两种,顺推法是从已知条件出发,逐步推算出要解决的问题;逆推法从已知问题的结果出发,用迭代表达式逐步推算出问题的开始的条件,即顺推法的逆过程。
1.1.3. 代码实现-兔子繁殖
问题描述:
兔子三个月起每个月生一只小兔子,小兔子长到三个月后每个月有生一直兔子,假如兔子都不死,那么第一个月从一只小兔子到N个月后,问兔子的总数为多少?
算法分析:
得每个月到兔子数量数列:
1 (1)=1
1 (2)=1
1 1 (3)=2
1 1 1 (4)=3
1 1 1 1 1 (5)=5
1 1 1 1 1 1 1 1 1 (6)=8
………… (N)=?
以上可知,为典型的斐波那契数列,即
f(n)=f(n-1)+f(n-2) n>2
f(n)=1 n<=2
代码实现:
【例1-1】 兔子繁殖:
def fib(n):
if n<=2:
return 1
else:
return fib(n-1)+fib(n-2)
if __name__ == '__main__':
n = 30
print("%d月后兔子的数量为:%d"%(n, fib(n)))
执行结果:
30月后兔子的数量为:832040