![dc1a88e0d97c8290bed569f7611c605f.png](https://i-blog.csdnimg.cn/blog_migrate/3952de32c9f77b5777179eeb574115ab.jpeg)
剑指Offer_编程题——跳台阶
题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)
具体要求:
时间限制: C/C++ 1秒,其他语言2秒
空间限制: C/C++32M,其他语言64M
具体思路:
我们根据题意先推,如果跳一步,则只有一种情况;如果跳两步,则有两种情况,跳3步则有3种情况。发现又是递归。因此和前面的思路一样。具体代码实现如下:
public class Solution {
public int JumpFloor(int target) {
if(target==1){
return 1;
}
if(target==2){
return 2;
}
return JumpFloor(target-1)+JumpFloor(target-2);
}
}
代码效果图如图所示:
![f4feac06866f4b6b1390e336a353c071.png](https://i-blog.csdnimg.cn/blog_migrate/787ae58c1f38f8a837e40fb761173592.png)
2、我们用Python来实现
class Solution:
def jumpFloor(self, number):
if number < 0:
return 0
if number == 1:
return 1
if number == 2:
return 2
ret = 0
a = 1
b = 2
for i in range(3, number + 1):
ret = a + b
a = b
b = ret
return ret
其效果图如图所示:
![a27770059603650e14a028c405508636.png](https://i-blog.csdnimg.cn/blog_migrate/e4c5d1c6c144ca8a179aea210e81fc16.png)
总结
本道题通过一个青蛙跳台阶来考察我们对递归的应用,因此在做该题之前,我们应该分析题意,在找规律中找出递归,一般不会直接考递归,会通过一个实际问题来通过总结规律来应用递归,其次要熟练掌握递归思想。继续加油,争取早日找到工作,Good Luck!!!