算法-斐波那契數列

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);
		}
	}

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