斐波那契數列(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)))