斐波那契數列(Fibonacci sequence),斐波那契數列以如下被以遞推的方法定義:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)是如何使用遞歸的呢?如何求它的第n項?
它的第n項等於它的n-1項加上n-2項。
則是:
f(n) = f(n-1) + f(n-2)
求第n項不斷的調用這個遞歸函數,求前兩項。遞歸的終止條件是這時就返回此時的值:
n == 1 or n == 2
那麼函數應是
def f(n):
if n==1 or n ==2:
return 1
return f(n-1) + f(n-2)
測試函數如下:
def f(n):
if n==1 or n ==2:
return 1
return f(n-1) + f(n-2)
while True:
n = int(input("輸入求的第n項"))
if n == 0 :
break
else:
print("斐波那契數列的第n項是:",f(n))
遞歸函數是在於找規律而進行遞歸,如下面這道兔子繁殖問題:
有一對兔子,4個月長大,此後的每個月可以繁殖出1對兔子,問第n月有多少對兔子。
天數 兔子對數
1 1
2 1
3 1
4 1
5 2
6 3
7 4
8 5
9 7
觀察可以得到規律,沒得出規律就多寫幾個。
f(n) = f(n-1) + f(n-4)
那麼就可以得到第n天有多少對兔子:
def f(n):
if n ==1 or n == 2 or n== 3 or n ==4:
return 1
return f(n-1)+f(n-4)
n = int(input("請輸入天數:"))
print(f(n))
主要是觀察規律從而得出遞歸的條件,和終止條件,儘量不要讓遞歸次數過多。
分享就到這裏。