坑爹的兔子
斐波那契数列的迭代实现
我们都知道兔子繁殖能力是惊人的,如下图:
我们可以用数学函数来定义:
课间练习:假设我们需要求出经历了20个月后,总共有多少对小兔崽子?(迭代 vs 递归)
1 def fab(n):
2 n1 = 1
3 n2 = 1
4 n3 = 1
5
6 if n < 1:
7 print('输入有误!')
8 return -1
9
10 while (n-2) > 0:
11 n3 = n2 + n1
12 n1 = n2
13 n2 = n3
14 n -= 1
15
16 return n3
17
18 result = fab(20)
19 if result != -1:
20 print('总共有%d对小兔崽子诞生!' % result)
斐波那契数列的递归实现
递归实现(递归计算时间将拉长)
1 def fab(n):
2 if n < 1:
3 print('输入有误!')
4 return -1
5
6 if n == 1 or n == 2:
7 return 1
8 else:
9 return fab(n-1) + fab(n-2)
10
11 result = fab(35)
12 if result != -1:
13 print('总共有%d对小兔崽子诞生!' % result)
注:迭代计算时间远比递归少,因为递归要循环出入栈