跳台阶
题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
解题思路:
看到这个题的第一反应是找规律,然后举例子没发现斐波那契的规律(真的是蠢笨),其实一个原因还是因为对题的理解还不够透彻。假如这只小青蛙现在要跳3级台阶,它相当于从第一级台阶跳2级到第3级台阶,或者是从第2级台阶跳1级到第3级台阶。及f(3)=f(2)+f(1),以此类推就可以找到规律。
注意点:
这个题和上一个斐波那契数其实是一样的可以使用递归,也可以不使用递归,择一即可,我们就挑不递归的。
具体代码:
public class Solution {
public int JumpFloor(int target) {
if(target<=0){
return 0;
}
if(target==1){
return 1;
}
if(target==2){
return 2;
}
int[] array=new int[target];
int i;
array[0]=1;
array[1]=2;
for(i=2;i<target;i++)
{
array[i]=array[i-1]+array[i-2];
}
return array[target-1];
}
}
总结:
其实除了找规律应该还有一种方法,就是排列组合,这也是我想到最笨的办法,就是跳2级台阶,然后和跳1级台阶排列组合,然后发现这种算法很笨。