码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer-跳台阶

时间:2019-02-06 19:47:42      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:非递归   strong   算法   它的   ++   结果   跳台阶   offer   public   

跳台阶

一、题目描述

一只青蛙一次可以跳上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-跳台阶

标签:非递归   strong   算法   它的   ++   结果   跳台阶   offer   public   

原文地址:https://www.cnblogs.com/MarkKobs-blog/p/10353958.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!