Ich versuche, die Lucas-Serie in Code mit Rekursion und die BigInteger
Klasse, aber ich habe Probleme beim Einstellen der Basis Fällen. Dieser Code gibt korrekt die Fibonacci-Sequenz aus, aber alles, was ich versucht habe, um die Startwerte N (0) und N (1) zu 2 bzw. 1 zu erhalten, ist vollständig gescheitert. Ich habe Hilfe-Dateien durchsucht, aber nichts, was ich gefunden habe, hat es mit BigIntegers
getan, die ich brauche, da ich plane, weit über das int
Limit zu gehen.Erstellen der Lucas-Serie mit BigInteger in Java rekursiv
import java.math.BigInteger;
public class LucasSeries {
private static BigInteger TWO = BigInteger.valueOf(2);
public static BigInteger fibonacci(BigInteger number) {
if (number.equals(BigInteger.ZERO) || number.equals(BigInteger.ONE)) {
return number;
} else {
return fibonacci(number.subtract(BigInteger.ONE)).add(fibonacci(number.subtract(TWO)));
}
}
public static void main(String[] args) {
for (int counter = 0; counter <= 30; counter++) {
System.out.printf("Lucas of %d is: %d%n", counter,
fibonacci(BigInteger.valueOf(counter)));
}
}
}
Bitte geben Sie den zutreffenden Fehlercode und die Nachricht (en) an – Prune
Wenn ich Ihre Frage verstehe, funktioniert dieser Code, aber eine Menge anderer Dinge, die Sie versucht haben, hat nicht funktioniert? Was waren diese Dinge? Wie haben sie nicht funktioniert? –
Beachten Sie, dass das Argument von "fibonacci" kein 'BigInteger' sein muss. Ein "int" wird gut funktionieren, wenn Sie nicht über die 2147483647. Fibonacci-Nummer hinausgehen müssen, was eine schlechte Idee ist. Der Rückgabetyp kann ein 'BigInteger' sein. –