求斐波那契Fibonacci数列的第n项
- 递归
public int Fibonacci(int n){
int[] result = {0,1};
if(n<2)
return result[n];
return Fibonacci(n-1)+Fibonacci(n-2);
}
- 非递归
public int Fibonacci(int n){
int[] result = {0,1};
if(n<2)
return result[n];
int sum = 0;
int left = 0;
int right = 1;
for(int i=2;i<=n;i++){
sum = left + right;
left = right;
right = sum;
}
return sum;
}
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路:
第一次跳如果跳1个台阶,剩余n-1;如果跳2个台阶,剩余n-2;
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法
有了上面的铺垫,如果第一次跳1个台阶,剩余n-1;如果第一次跳2个台阶,剩余n-2;
如果第一次跳3个台阶,剩余n-3。。。。
两式相减
public class Solution {
public int JumpFloorII(int target) {
int[] result = {0,1};
if(target<2)
return result[target];
int sum = 1;
for(int i=2;i<=target;i++){
sum *= 2;
}
return sum;
}
}