斐波那契数列
1.定义:斐波那契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=Fn-1+Fn-2(n>=2,n∈N*),用文字来说,就是斐波那契数列由 0 和 1 开始,之后的斐波那契数列系数就由之前的两数相加。
2.Java实现,以递归调用的方式实现
public class Solution {
public int Fibonacci(int n) {
int result=0;
if(n == 0){
result = 0;
}else if(n == 1){
result = 1;
}else{
result = Fibonacci(n-1)+Fibonacci(n-2);
}
return result;
}
}
应用初级版跳台阶问题
1.问题描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
2.问题分析:最终跳跃方法为F(n) 个。在最后一次跳跃时,有两种情况:一、跳一级台阶,此前的跳跃方法为F(n-1)个;二、跳两级台阶,此前的跳跃方法为F(n-2)个。因此,F(n) = F(n-1)+F(n-2)。并且,其基础条件为:F0=0,F1=1,F2=2。
3.Java实现
public class Solution(){
public int JumpFloor(int target) {
int result = 0;
if(target == 0){
result = 0;
}else if(target == 1){
result = 1;
}else if(target == 2){
result = 2;
}else{
result = JumpFloor(target-1) + JumpFloor(target -2);
}
return result;
}
}
应用升级版跳台阶问题
1.问题描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
2.问题分析:最终跳跃方法为F(n) 个。在最后一次跳跃时,有n种情况:一、跳一级台阶,此前的跳跃方法为F(n-1)个;二、跳两级台阶,此前的跳跃方法为F(n-2)个;三、跳三级台阶,此前的跳跃方法为F(n-3)个。。。因此,F(n) = F(n-1)+F(n-2)+F(n-3)+…+F(0)。同理可得,F(n-1) = F(n-2)+F(n-3)+…+F(0)。所以,F(n) = 2*F(n-1)。并且,其基础条件为:F0=0,F1=1。
3.Java实现
public class Solution {
public int JumpFloorII(int target) {
int result = 0;
if(target == 0){
result = 0;
}else if(target == 1){
result = 1;
}else{
result = 2 * JumpFloorII(target -1);
}
return result;
}
}