剑指offer 8、青蛙跳台阶 python和c++

题目描述:

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

思路:这题跟前面一题 剑指offer 7、斐波那契数列 python和c++ 基本一样 ,都是从前面的数据得到后面的。

解释一下:

        我们要跳上第 n 级台阶,要么从第 n−1级台阶跳一级上来,要么从第 n−2级台阶跳两级上来,令 f(n)表示从第一级台阶跳上第 n 级台阶有几种跳法。则有:
                                                 f(n)=f(n−1)+f(n−2)

        先确定n=1,f(1)=1,n=2,f(2)=2,    f(3)=f(2)+f(1),f(4)=f(3)+f(2),

和前面 斐波那契数列 差不多不。

所以代码基本一样

python版

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloor(self, number):
        if number < 3:
            return number    
        num1,num2 = 1, 2  #初始化跳到第一楼和第二楼的跳法
        for i in range(2,number):
            res = num1 + num2
            num1 = num2
            num2 = res
        return res
        # write code here

c++版

class Solution {
public:
    int jumpFloor(int number) {
        if(number<3)
            return number;
        int num1 = 1, num2 = 2, res = 0;  //初始化
        for(int i = 2; i < number; ++i){
            res = num1 + num2;  
            num1 = num2; 
            num2 = res;
        }
        return res;
    }
};

这个我之前写过一篇文章说这个跳台阶的问题 青蛙跳台阶

里面有基本版的跳台阶,还有进阶版的,以及变态版的跳,感兴趣的可以看看

posted on 2021-06-10 17:19  雾恋过往  阅读(80)  评论(0编辑  收藏  举报

Live2D