算法:費波納茨數列1 1 2 3 5 8 13 21

故事來源: 一天,皇帝騎在馬上,率領着文武百官,在號兵鼓手、馬隊的簇擁下,浩浩蕩蕩向比薩市費波納茨的居所進發。弗德烈皇帝向費波納茨提出了這樣一個問題:如果一對兔子從第二個月開始,每月可產一對兔子,試問一年後這個特定的區域裏共有多少對兔子?

費波納茨順口回答了皇帝的問題:共有144對,並把他的計算方法說了出來——1,1,2,3,5,8,13,21,34,55,89,144,這就是費波納茨數列的原版。根據這種計算方法,可以把這個數列無限量地擴大下去,……55,89,144,233,377,610。費波納茨道出了一個自然地數列,後人把它叫做費波納茨數列

斐波納契數列,又稱黃金分割數列,指的是這樣一個數列:1、1、2、3、5、8、13、21、……。這個數列從第三項開始,每一項都等於前兩項之和。它的通項公式爲:(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}(又叫“比內公式”,是用無理數表示有理數的一個範例。)(√5表示根號5)
在這裏插入圖片描述

方法一:循環實現

int fun(int n) {
	int sum = 0, tmp1=1, tmp2 = 1;

	if (n < 2)
		return 1;

	for(int i = 2; i <= n; i++) {
		sum = tmp1 + tmp2;
		tmp2 = tmp1;
		tmp1 = sum;
	}
	
	return sum;
}

方法二:遞歸實現

int fun(int n) {
	int sum = 0;

	if (n < 2)
		return 1;

	for(int i = 2; i <= n; i++) {
		sum = fun(i-2) + fun1(i-1);
	}

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