1. 程式人生 > 實用技巧 >劍指Offer:跳臺階(10.3)

劍指Offer:跳臺階(10.3)

題目描述:

一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。

解題思路:

這是一道經典的遞推題目,你可以想如果青蛙當前在第n級臺階上,那它上一步是在哪裡呢?

顯然,由於它可以跳1級臺階或者2級臺階,所以它上一步必定在第n-1,或者第n-2級臺階,也就是說它跳上n級臺階的跳法數是跳上n-1和跳上n-2級臺階的跳法數之和

設跳上 級臺階有 種跳法,則它跳上n級的臺階有 種跳法。

然後,我們又思考初始()的情況,跳上1級臺階只有1種跳法,跳上2級臺階有2種跳法,最終我們得到如下的遞推式:

方法一:

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

方法二:

public class Solution {
    public int JumpFloor(int target) {
        int a = 1, b = 1;
        for (int i = 1; i < target; i++) {
            a 
= a + b; b = a - b; } return a; } }