一道經典的遞歸題目--斐波那契數列

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

主要是觀察規律從而得出遞歸的條件,和終止條件,儘量不要讓遞歸次數過多。
分享就到這裏。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章