剑指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;
}
};
这个我之前写过一篇文章说这个跳台阶的问题 青蛙跳台阶
里面有基本版的跳台阶,还有进阶版的,以及变态版的跳,感兴趣的可以看看