递归算法----走楼梯问题(跳台阶)

/**
 * 案例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);
    }
}

 

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