题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
剑指offer上面的一道题。
之前想着没有一点头绪,但是看见大家的想法,真的是醍醐灌顶。特别是感谢牛客网上面叫wangfan的。
之前看着前面大家都在说是斐波那契数列,虽然知道斐波那契额数列的特点,但是并没有想到,知道看见他的解释。“对于第n个台阶来说,只能从n-1或者n-2的台阶跳上来”
斐波那契额数列的特点:
第一项和第二项为1,下面的都上前两项这和
1 1 2 3 5 8 13 21 。。。
针对这道问题,当跳的台阶是0或者是1的时候,刚好就有0种或1中。
但是到n = 2,的时候,有两种可能。可以是从n = 0,跳上来或者是从n = 1跳上来,所以n = 2有两种可能。
之后n>2的时候,就只能从n-1或者n-2上跳上来了。
部分代码:利用斐波那契数列,加上递归的思想
public int JumpFloor(int target) {
if(target<2){
return target;
}
if(target == 2){
return 2;
}
return JumpFloor(target-1)+JumpFloor(target-2);
}