遞歸算法----走樓梯問題(跳臺階)

/**
 * 案例2 分治算法 走樓梯
 * 一個臺階總共有n級,如果一次可以走1級,也可以一次走2級,求總共有多少種走法。
 * 分析:
 * 如果只有1級臺階,則只有一種走法,如果有2級臺階,則有2種走法:一次走1級或一次走2級
 * 假設有三級臺階,則可以一次走1級或一次走2級,如果一次走1級則還剩2級臺階,產生2種走法(上面已經說了),
 * 一次走2級則還剩1級只有一種走法,總共的走法就是2+1=3.
 *             3
 *            /\
 *剩餘級數   2  1
 * 走法     2 + 1 = 3
 * 由此可見,n>2時,走法數就是第一次走1級後剩餘級數的走法數+第一次走2級後剩餘級數的走法數,這正是遞歸
 *可以歸納出公式:
 * f(n) = 1  n=1
 *      = 2  n=2
 *      =f(n-1) + f(n-2)  n>2
 * 觀察公式可發現,這其實是斐波那契數列!
 *
 * **/
public class zoulouti {
    public static void main(String[] args){
        int res = solution(3);
        System.out.println(res);
    }

    static int solution(int n){
        if (n==1) return 1;
        if (n==2) return 2;
        return solution(n-1) + solution(n-2);
    }
}

 

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