斐波那契数列及其应用跳台阶问题,以及Java实现

斐波那契数列

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;
    }
}

猜你喜欢

转载自blog.csdn.net/nuannuanloveai/article/details/86551368