1. 斐波那契數列
不少編程問題都和斐波那契數列有關,或者可以看做是斐波那契數列的另一種表述,比如一個經典的青蛙跳臺階問題
- 一隻青蛙一次可以跳上1級臺階,也可以跳上2級,求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)
2. 解法
本質上就是斐波那契問題,對於第n個臺階來說,只能從n-1或者n-2的臺階跳上來,所以
F(n) = F(n-1) + F(n-2)
/**
* 斐波那契數列問題
* 1.數組實現 1 1 2 3 5 8 13....
* a[0]=1,a[1]=1;
* a[x>=2]=a[x-1]+a[x-2];
*
* 2.變量變化實現 a b
* 1 1
* 1 2
* 2 3
* 3 5
* 5 8
* a=1,b=1;
* tem=a;
* a=b;
* b=b+tem;
* 3.遞歸實現
*/
public static int fib(int n) {
if (n == 0)
return 0;
if (n == 1 || n == 2) {
return n;
} else {
return fib(n - 1) + fib(n - 2);
}
}