2016-08-09 23 views
-1

Ich möchte die 93. und mehr Fibonacci-Zahlen in JAVA bekommen. In der Tat, wenn ich versuche, Fibonacci-Nummern wie long zu bekommen, bekomme ich höchstens die 92. Nummer. Gibt es eine Möglichkeit, 93. und danach zu erreichen?Wie erreiche ich nach 92. Fibonacci-Nummern in JAVA?

Beispielausgabe

91. number = 4660046610375530309

92. number = 7540113804746346429

93. number = -6246583658587674878

Hier

ist mein Code:

long s1 = 0; 
    long s2 = 1; 
    long current = 0; 

    for (int i = 0; i < 100; i++) { 
     current = s1 + s2; 
     s2 = s1; 
     s1 = current; 

     System.out.println((i+1) + ". " + current); 
    } 
+0

Verwendung 'BigInteger' – Saravana

+0

Sie Integer-Überlauf haben, versuchen Sie es mit' BigInteger' statt 'long' –

+0

Sie können die Klasse BigInteger verwenden – Error404

Antwort

3

Es gibt einen Weg 93. und nach dem Fibonacci-Zahlen zu erreichen. Sie können java.math.BigInteger Bibliothek verwenden. Sie können große Zahlen erreichen, wie Sie sich nicht vorstellen können, wie 100.000 Ziffern. Hier sind die Schritte:

Add-Bibliothek

import java.math.BigInteger; 

Erste 10.000 Fibonacci-Zahlen

BigInteger s1 = BigInteger.ZERO; 
BigInteger s2 = BigInteger.ONE; 
BigInteger current = BigInteger.ZERO; 

for (int i = 0; i < 10000; i++) { 
    current = (s1.add(s2)); 
    s2 = s1; 
    s1 = current; 
    System.out.println((i+1) + ". " + current); 
} 
+0

danke für die Antwort –

+0

Sie sind willkommen @KevinDang –

0

Sie können BigInteger verwenden. Werfen Sie einen Blick auf this question.

zB:

public static BigInteger fib(int n) { 
    if (n == 0 || n == 1) { 
    return BigInteger.ONE; 
    } 
    return fib(n - 2).add(fib(n - 1)); 
} 

public static void main(String[] args) { 
    for (int i = 0; i < 10; i++) { 
    System.out.println(fib(i)); 
    } 
} 
+0

obwohl eine gültige Antwort ist, macht die Rekursion Programm wirklich langsam ... –

+0

@JordiCastilla die andere Frage, die ich bezog hat ein Beispiel mit Auswendiglernen. – Wickramaranga

+0

Ja, ich habe diese Frage als Duplikate mit Ihrer verknüpften Frage markiert, ich sage nur, dass die Leistung in diesem Fall am schlimmsten ist, wenn Rekursion verwendet wird. –