斐波那契數列源於數學家列昂納多·斐波那契(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