题目描述:
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
分析:根据斐波那契数列定义可以使用递归 Fibonacci(int n)=Fibonacci(int n-1)+Fibonacci(int n-2)
Fibonacci(0)==0
Fibonacci(1)==1
n<=39
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
分析:斐波那契数列的应用,只能从n-1个台阶或者n-2个台阶调到第n个台阶,且剩下一种跳法,从n-2个台阶开始跳,只能挑两步,跳一步包含在从n-1的台阶跳的情况里
public int JumpFloor(int target) {
if(target==1){
return 1;
}
if(target==2){
return 2;
}
return (JumpFloor(target-1)+2+JumpFloor(target-2)+1);
}
题目描述
public int JumpFloorII(int target) {
return (int)Math.pow(2,target-1);
}
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
f(n)=f(n-1)+f(n-2)+f(n-3)+.....+f(1) 1式
f(n-1)=f(n-2)+f(n-3)+f(n-4)+.....+f(1) 2式
1式-2式可得 f(n)=2*f(n-1)
f(1)=1
是一个2为公比的等比数列an=a1*q^(n-1)