1. 程式人生 > >Java實現斐波那契數列並輸出前10000個數值

Java實現斐波那契數列並輸出前10000個數值

斐波納契數列,又稱黃金分割數列,指的是這樣一個數列:0、1、2、3、5、8、13、21、……在數學上,斐波納契數列以如下被以遞迴的方法定義:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)。

以下是Java程式碼實現(遞迴與遞推兩種方式,注意數值越界問題):

import java.math.BigInteger;
import java.util.Scanner;    

public class Fibonacci{    
    public static void main(String[] args) {  
        System.out.println("請輸入您要得到的個數:");
int n = new Scanner(System.in).nextInt();
for (int i = 1; i <= n; i++) {
System.out.println(fibonacciNormal

(i) + "   " + i);
}
        int sum = 0;  
        for(int i = 1; i <= n; i++){  
            sum += fibonacci(i);  
        }  
        System.out.println(sum);  
    }  
      
    // 遞迴實現方式  (效率低)
    public static int fibonacci(int n){  
        if(n <= 2){  
            return 1;  
        }else{  
            return fibonacci(n-1) + fibonacci(n-2);  
        }  
    }        
    // 遞推實現方式  (效率高)
    public static BigInteger fibonacciNormal(int n){  

if (n == 1) {
return new BigInteger("0");
}
BigInteger n1 = new BigInteger("0"), n2 = new BigInteger("1"), sn = new BigInteger("0");
for (int i = 0; i < n - 1; i++) {
sn = n1.add(n2);
n1 = n2;
n2 = sn;
}
return sn;

        }
}  

相關推薦

Java實現數列輸出10000數值

斐波納契數列,又稱黃金分割數列,指的是這樣一個數列:0、1、2、3、5、8、13、21、……在數學上,斐波納契數列以如下被以遞迴的方法定義:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n&

Java實現數列(遞迴、遍歷、矩陣)

什麼是斐波那契數列 其實很簡單,可以理解為: F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*) 比如這樣一個數列:1、1、2、3、5、8、13、21、34、…… 有興趣可以看百度百科 下面我們就來實現,給定一個n,求f(n)的值

java實現數列的三種方法

Java實現斐波那契數列的三種方法 什麼是斐波那契數列 這裡借用一下度孃的一段話:斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是

Java實現數列

public class Java02{ public static void main(String[] args){ int num = Integer.parseInt(args[0]); ///將string型別轉換為int型別

java實現數列,現在要求輸入一個整數n,請你輸出數列的第n項。 n

public class Solution_feibonaqi { public int Fibonacci(int n) { int result[] = { 0, 1 }; if (n < 2) { return result[n];

《劍指Offer》Java實現-數列

題目描述 大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項。 n<=39 思路 很基礎的題目,有遞迴和非遞迴兩種實現思路。 程式碼 遞迴演算法

java遞迴實現數列

/** *create Date:2016-12-23 *modified Date:2016-12-23 *modified by:shark *Description:斐波那契數列 **/ public class Shulie{public static long d

用簡單的Java程式碼實現數列

import java.util.Scanner;   public class Pro {         //----------輸入第幾項輸出對應該項的值-----------     public static void main(String [] args)

數列-java程式設計:三種方法實現數列

題目要求:編寫程式在控制檯輸出斐波那契數列前20項,每輸出5個數換行 //java程式設計:三種方法實現斐波那契數列 //其一方法: public class Demo2 { // 定義三個變數方法

java程式設計:三種方法實現數列

題目要求:編寫程式在控制檯輸出斐波那契數列前20項,每輸出5個數換行 方法一:public class Fibonacci1{ //定義三個變數方法public static void main(String[] args) {int a=1, b=1, c=0;Syst

python實現數列筆記

log 得到 while span style mage lis nbsp images 斐波那契數列即著名的兔子數列:1、1、2、3、5、8、13、21、34、…… 數列特點:該數列從第三項開始,每個數的值為其前兩個數之和,用python實現起來很簡單: a=0 b=1

實現數列

指定 style tar https 遞歸 com code lan pri # 斐波那契數列# 1,1,2,3,5,8,13....1)用遞歸函數實現斐波那契數列:  (指定第幾個斐波那契數) def fib(n): if n == 1 or n == 2

Python 遞歸實現數列

斐波那契數列Python 遞歸實現斐波那契數列def fab(n): if n==1 or n==2: return 1 else: return fab(n-1)+fab(n-2)num=int(input(‘請輸入數字:‘))result=fab(num)print

python實現數列

定義函數 實現 python實現 code while 斐波那契數列 數列 int a+b 斐波那契數列 1, 1, 2, 3, 5, 8, 13, 21, 34, ... 除第一項和第二項外,任意一項的值為前面兩項的和 定義函數 def fib(N): n,a,b

C++實現數列

一個數 ngxin turn 版權 min clu mes bsp In 斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一

python代碼實現數列數列

nbsp cci con 數學家 color span 分割 兔子 簡單 斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,

C語言經典演算法(八)——遞迴實現數列的兩種方法

後繼續整理演算法並寫出自己的理解和備註。 C++實現的:遞迴實現斐波那契數列 1、 遞迴實現斐波那契數列Fib(n) <1> 題目描述:輸入n值,求解第n項的斐波那契數列值 <2> 方法一:概念法 <3> 方法二:遞迴法 斐波那契數列值是值1

JavaScript實現數列

斐波那契數列,又稱黃金分割數列,指的是這樣一個數列:1,1,2,3,5,8,13,21……從第3個數字開始,每個數字等於它前面兩個數字之和 方法1:遞迴 function fib(n){ if(n==1 || n==2){ return 1; }

實現數列(js),以及複雜度降階

實現斐波那契數列(js),以及複雜度降階 背景——兔子數列 假設第1個月有1對剛誕生的兔子,第2個月進入成熟期,第3個月開始生育兔子,而1對成熟的兔子每個月會生1對兔子,兔子永遠不會死去……那麼,由1對兔子開始,12個月後會有多少對兔子呢? 問題分析: 我們拿新出生

18-golang通過channel實現數列

    寫斐波那契數列其實很簡單 但是我們用channel來寫 自我鍛鍊一下 也熟悉一下channel的用法       func main() { channel := make(chan int)