斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……。这个数列从第3项开始,每一项都等于前两项之和。
下面分享两个方法证明小兔纸的繁殖能力有多强(小兔纸的繁殖周期与斐波那契数列一致):
方法一:迭代实现
def fibonacci(n):
n1 = 1
n2 = 1
n3 = 1
if n < 1: # 输入错误的情况,返回0
print("输入错啦!")
return 0
while (n-2)>0:
n3 = n2 + n1
n1 = n2
n2 = n3
n -= 1
return n3:
num = int(input("请输入月份n:"))
result = fibonacci(num)
if result: # 当返回值为非0,result为True
print("总共有 %d 对小兔兔诞生!!!" % result)
方法二:递归实现
def fab(n):
if n < 1:
print("输入有误!")
return 0
if n == 1 or n == 2:
return 1
else:
return fab(n-1) + fab(n-2)
num = int(input("请输入月份n:"))
result = fab(num)
if result:
print("总共有%d对小兔纸!!!" % result)
方法三:利用元组进行交换
def Fib(n):
a,b = 1,1
for i in range(n-1): # 当n = 0时,不执行for循环中的内容
a, b = b, a+b
return a
num = int(input("输入月份:"))
print("第 %d 个月有 %d 对兔子" % (num, Fib(num)))