samedi 30 mai 2015
Komplexität Fibonacci
Posted on 15:55 by verona
Erstmal guten Abend Leute,
im folgenden eine kleine Frage, die nach ein wenig herumspielen entstanden ist. In Vorlesungen (und auch im Internet) finde ich immer wieder die Komplexität für die Berechnung der Fibonacci Folgen mit O(n) [iterativ] und O(2^n) [rekursiv]
Ist ja auch entsprechend der Funktionen sinnvoll. Hab das ganze jetzt einmal in Java Code Umgesetzt und die Zeit gemessen- jetzt wüsst ich gern, ob mir jemand erklären kann warum die Ergebnisse doch recht auffällig von der zu erwartenden Zeit abweichen. (Zum ersten mal in diesem Forum aktiv- hoffe einfach mal, jetzt keine groben Formfehler begangen zu haben)
Erstmal das Ergebnis der Ausgabe (Eingabe 50)
Iterativ 12586269025 Zeit: 0.009179 Sekunden
Rekursiv 12586269025 Zeit: 0.00378 Sekunden
Endrekursiv 12586269025 Zeit: 0.016739 Sekunden
und im Folgenden noch der Code
im folgenden eine kleine Frage, die nach ein wenig herumspielen entstanden ist. In Vorlesungen (und auch im Internet) finde ich immer wieder die Komplexität für die Berechnung der Fibonacci Folgen mit O(n) [iterativ] und O(2^n) [rekursiv]
Ist ja auch entsprechend der Funktionen sinnvoll. Hab das ganze jetzt einmal in Java Code Umgesetzt und die Zeit gemessen- jetzt wüsst ich gern, ob mir jemand erklären kann warum die Ergebnisse doch recht auffällig von der zu erwartenden Zeit abweichen. (Zum ersten mal in diesem Forum aktiv- hoffe einfach mal, jetzt keine groben Formfehler begangen zu haben)
Erstmal das Ergebnis der Ausgabe (Eingabe 50)
Iterativ 12586269025 Zeit: 0.009179 Sekunden
Rekursiv 12586269025 Zeit: 0.00378 Sekunden
Endrekursiv 12586269025 Zeit: 0.016739 Sekunden
und im Folgenden noch der Code
Java Code:
-
-
test(50);
-
}
-
-
public static void test(int n)
-
{
-
long fib =fib_it(n);
-
//
-
//
-
fib =fib_it(n);
-
//
-
//
-
fib =fib_tail(n);
-
}
-
-
public static long fib_it(int n)
-
{
-
long tmp0 = 1;
-
long tmp1 = 1;
-
if(n == 1 || n == 0) return 1;
-
else{
-
for(int i = 1; i<n; i++)
-
{
-
long help = tmp1 + tmp0;
-
tmp0 = tmp1;
-
tmp1 = help;
-
}
-
return tmp0;
-
}
-
}
-
-
-
public static long fib_rec(long n)
-
{
-
if(n == 1) return 1;
-
else return fib_rec(n-1)+fib_rec(n-2);
-
}
-
-
public static long fib_tail(int n)
-
{
-
if(n == 1 || n == 0) return 1;
-
return _fib_tail(n, 0, 1, 0);
-
}
-
-
public static long _fib_tail(int n,long decN,long decdecN, long acc)
-
{
-
if(n == 1 || n == 0)return acc;
-
else{
-
return _fib_tail(n-1, decdecN, decN+decdecN, decN+decdecN);
-
}
-
}
Komplexität Fibonacci
Categories: Komplexität Fibonacci
Inscription à :
Publier les commentaires (Atom)
0 commentaires:
Enregistrer un commentaire