經典問題——斐波那契數列(通過Java實現遞歸和非遞歸方法)

斐波那契數列源於數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖爲例子而引入的計算問題。假設某種兔子兔子,出生第一個月變成大兔子,大兔子再過一個月能生下一對小兔子,且一年內不會發生死亡。現有一對小兔子,請問一年後有多少隻兔子?

分析這個數列其實是有規律的
第一個月:一對小兔子
第二個月:一對大兔子
第三個月:一對大兔子+一對小兔子
第四個月:兩對大兔子+一對小兔子


仔細分析:
數列如下 1 1 2 3 5 8 13 21
前面兩位的和都是第三位的結果
1+1 = 2
1+2 = 3
2+3 = 5
3+5 = 8
5+8 = 13
8+13= 21

@author:肖佳嘉
@Date:May 1, 2019
package File_Statistics;
import java.math.BigInteger;
public class File05_Fibonacci {
	public static void main(String[] args) {
		//通過遞歸實現斐波那契數列的計算
		//1 1 2 3 5 8 13 21 
		System.out.println(fun(8));
		//通過非遞歸方法實現斐波那契數列的計算
		fun2(8);
	}
	public static void fun2(int z ) {
		int [] arr = new int[z];
		 arr[0]=1;
		 arr[1]=1;
		for(int j =2; j<arr.length;j++) {
			arr[j] = arr [j-2] + arr[j-1]; 
		}
		System.out.println(arr[arr.length-1]);
	}
	//通過遞歸實現斐波那契數列的計算
	public static int fun(int  i ) {
		if(i == 1) {
			return 1;
		}else if(i == 2) {
			return 1;
		}else {
			return fun(i-2)+fun(i-1);
		}
	}
	
}

測試結果:
21
21

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