劍指offer-跳台階


跳台階

一、題目描述

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

二、算法思想

這題與斐波那契數列幾乎一致,寫出頭兩項的值,然后知道每個n的跳法種數F(n)與它的前兩項F(n-1)、F(n-2)有關。
n層的樓梯,若第一次跳是跳一層,那么還有n-1層要跳,這n-1層就有F(n-1)種跳法;若第一次跳是跳兩層,那么還有n-2層要跳,這n-2層就有F(n-2)種跳法。於是就有關系:F(n)=F(n-2)+F(n-1)

三、算法實現

3.1、遞歸版本

class Solution {
public:
    int jumpFloor(int number) {
        if(number==0)return 1;
        if(number==1)return 1;
        return jumpFloor(number-1)+jumpFloor(number-2);
    }
};

3.2、非遞歸版本

class Solution {
public:
    int jumpFloor(int number) {
        int pp=1;
        int p=1;
        int result=1;
        for(int i=2;i<=number;i++){
            result=pp+p;
            pp=p;
            p=result;
        }
        return result;
    }
};

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



劍指offer-變態跳台階 劍指offer-跳台階 劍指offer-變態跳台階 劍指Offer-跳台階 劍指offer-跳台階 劍指offer-跳台階 劍指offer-跳台階 劍指offer-跳台階 劍指offer-變態跳台階 劍指offer-變態跳台階
 
粤ICP备14056181号  © 2014-2021 ITdaan.com