最近在练习一些编程题,也有想法慢慢开始自己的博客记录与分享学习的习惯,暂时先用优快云博客开始吧~
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解释:其实这就是一道考察斐波那契数列(递归)题目,在初高中数学竞赛的简单题中也很常见。
public class Solution {
public int JumpFloor(int target) {
if (target>0)
{
if (target==1||target==2)
return target;
else
return JumpFloor(target-1)+JumpFloor(target-2);
}
return 0;
}
}
class Solution {
public:
int jumpFloor(int number) {
if(number<=0)
return 0;
else if (number==1)
return 1;
else if(number==2)
return 2;
else
return jumpFloor(number-1)+jumpFloor(number-2);
}
};
但是递归方法效率较低;
我们可以考虑迭代方法直接计算,时间复杂度更低:
class Solution {
public:
int jumpFloor(int number) {
if(number == 0)
return 0;
int f1 = 1, f2 = 2;
for(int i = 1; i < number; i++){
f2 += f1;
f1 = f2 - f1;
}
return f1;
}
};
还有很多其他方法,不多做探讨