剑指offer — 斐波那契公式及其应用(青蛙跳台阶、变态跳台阶)

青蛙跳台阶

题目:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

分析:
一个台阶,即f(1):只有一种跳法(1)

两个台阶,即f(2):有两种跳法(1,1)、(2)

三个台阶,即f(3):有两种情况,最后一次跳一个台阶、最后一次跳两个台阶。
故,f(3) = 最后一次跳一个台阶的所有情况 + 最后一次跳两个台阶的所有情况。
最后一次跳一个台阶,则之前已经跳了两个台阶,所有情况:f(2)
最后一次跳两个台阶,则之前已经跳了一个台阶,所有情况:f(1)
故,f(3) = f(1) + f(2)

4个台阶,即f(4):也有两种情况,最后一次跳一个台阶、最后一次跳两个台阶。
故,f(4) = 最后一次跳一个台阶的所有情况 + 最后一次跳两个台阶的所有情况。
最后一次跳1个台阶,则之前已经跳了三个台阶,所有情况:f(3)
最后一次跳2个台阶,则之前已经跳了两个台阶,所有情况:f(2)
故,f(4) = f(2) + f(3)

public class Solution {
    public int JumpFloor(int target) {
        if(target==1)
            return 1;
        if(target == 2)
            return 2;
        return JumpFloor(target-2)+JumpFloor(target-1);
    }
}

变态跳台阶

题目:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
分析:

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