G
Guest
Gast
Hallo,
Ich sollte für eine Aufgabe einen nicht rekursiven Fibonacci Algorithmus entwerfen.
Für den Algorithmus hat mein weniger Hirnschmalz noch ausgereicht.
Allerdings stoße ich auf ein mekrwürdiges Problem bzw. einen Javabug(?).
Also der Algorithmus gibt für die ersten Fibonacci-Folgeglieder auf jeden Fall die richtigen Ergebnisse aus.
Dann allerdings genau ab dem Wert 47 bekomme ich negative Werte :bahnhof: .
Warum dass denn? Das Ginge ja nur, wenn der Wert a[i-2] negativ ist und an sich ist es generel unmöglich, dass einer der Vorgänger Werte negativ ist.
Hier mal die Ergebnisse für F(46) und F(47)
1836311903
-1323752223
Wie gesagt, wenn jemand weiß, ob es sich hierbei nur um einen Javabug handelt, dann wäre ich über Aufklärung dankbar. Wenn das am Algo liegen sollte( auch wenn ich das nicht nachvollziehen könnte, zumindest bis jetzt nicht) dann wäre ich auch hier für jeden Hinweis dankbar.
Und noch generel eine Frage. Vielleicht gibt es hier ja Laufzeit Experten. Was wäre hier denn ein gutes Maß für eine Laufzeitberechnung? Die Anzahl der Additionen? Die wäre ja in dem Fall Linear, oder sollte mans eher von den Bitvalues abhängig machen. Die werden ja bei großen Eingabelängen relativ schnell groß.
Ich sollte für eine Aufgabe einen nicht rekursiven Fibonacci Algorithmus entwerfen.
Für den Algorithmus hat mein weniger Hirnschmalz noch ausgereicht.
Allerdings stoße ich auf ein mekrwürdiges Problem bzw. einen Javabug(?).
Also der Algorithmus gibt für die ersten Fibonacci-Folgeglieder auf jeden Fall die richtigen Ergebnisse aus.
Dann allerdings genau ab dem Wert 47 bekomme ich negative Werte :bahnhof: .
Warum dass denn? Das Ginge ja nur, wenn der Wert a[i-2] negativ ist und an sich ist es generel unmöglich, dass einer der Vorgänger Werte negativ ist.
Hier mal die Ergebnisse für F(46) und F(47)
1836311903
-1323752223
Wie gesagt, wenn jemand weiß, ob es sich hierbei nur um einen Javabug handelt, dann wäre ich über Aufklärung dankbar. Wenn das am Algo liegen sollte( auch wenn ich das nicht nachvollziehen könnte, zumindest bis jetzt nicht) dann wäre ich auch hier für jeden Hinweis dankbar.
Und noch generel eine Frage. Vielleicht gibt es hier ja Laufzeit Experten. Was wäre hier denn ein gutes Maß für eine Laufzeitberechnung? Die Anzahl der Additionen? Die wäre ja in dem Fall Linear, oder sollte mans eher von den Bitvalues abhängig machen. Die werden ja bei großen Eingabelängen relativ schnell groß.
Code:
public class FibNonRec {
public static int getFibonacciValue(int x){
int[] a= new int[x+1];
a[0]=0;
a[1]=1;
for(int i=2;i<=x;i++){
a[i]=a[i-1]+a[i-2];
}
return a[x];
}
public static void main(String[] args){
System.out.println(getFibonacciValue(46));
System.out.println(getFibonacciValue(47));
}
}