美文网首页
斐波那契数列求解

斐波那契数列求解

作者: 四喜汤圆 | 来源:发表于2018-09-16 13:32 被阅读20次

一、相关概念

二、题目

题目

求斐波那契数列的第n项是多少

思路

  • 递归,时间复杂度O(N2)。
  • 为避免递归中的重复计算,从下往上计算,将已经得到的中间项保存起来,时间复杂度O(N)。

代码

import java.util.Scanner;

/**
 * 斐波那契数列:管他从第几项开始
* <p>Description: </p>  
* @author 杨丽金  
* @date 2018-9-16  
* @version 1.0
 */
public class Fib {
    public static void main(String[] args) {
        new Fib().exe();
    }
    
    private void exe(){
        Scanner scan=new Scanner(System.in);
        while(scan.hasNext()){
            int n=scan.nextInt();
            System.out.println(fib_for(n));
            System.out.println(fib_recu(n));
            
        }
    }

    /**
     * 递归求法
     * @param n
     * @return
     */
    public int fib_recu(int n){
        if(n==0){
            return 0;
        }
        if(n==1){
            return 1;
        }
        return fib_recu(n-1)+fib_recu(n-2);
    }
    
    /**
     * 循环:把已经得到的中间项保存起来,从下往上计算,复杂度O(n)
     * @param n
     * @return
     */
    public long fib_for(int n){
        int[] result={0,1};
        if(n<2){
            return result[n];
        }else{
            long fibTwo=0;// 第i-2项
            long fibOne=1;// 第i-1项
            long fibN=0;// 第i项
            for(int i=2;i<=n;i++){
                fibN=fibTwo+fibOne;
                fibTwo=fibOne;
                fibOne=fibN;
            }
            return fibN;
        }
    }
}

参考文献

斐波那契的推导

相关文章

网友评论

      本文标题:斐波那契数列求解

      本文链接:https://www.haomeiwen.com/subject/utpxnftx.html