剑指offer题目8:青蛙跳台阶
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
解答思路
没想到还是斐波那契数列。。
青蛙在跳1级台阶的时候是1种跳法,跳2级台阶是2种跳法。
假设跳n级台阶是f(n)个跳法,那么青蛙的跳n级台阶的时候,设第1次跳的时候是跳了1级,那么剩下台阶是f(n-1)个跳法,第1次跳的时候是跳了2级,剩下台阶是f(n-2)个跳法。
那么f(n)=f(n-1)+f(n-2)
实现代码
class Solution {
public:
int jumpFloor(int number) {
int n = number;
int i = 1;
int ret = 0;
int ret2 = 0;
int ret1 = 0;
if(n == 0 || n== 1 || n == 2) {
return n;
}
while(i <= n) {
if(i == 1) {
ret2 = 1;
} else if(i == 2) {
ret1 = 2;
} else {
ret = ret1 + ret2;
ret2 = ret1;
ret1 = ret;
}
++i;
}
return ret;
}
};
作者:大傻逼
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号