【原创首发】跟着小灰学Python-递推算法

759 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

声明:版权归本人所有,违者必究。 
转载请注明来源 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