hi leute, es geht um folgendes:
ich soll die n-te fibonaccizahl, und n! (n Fakultät) jeweils iterativ und rekursiv berechnen und für jeden vorgang die dauer bestimmen.
was ich hab ist dashier:
für die zeit iterativ berechnen er mir meistens 0 ... wahrscheinlich weil die benutzen zahlen zu klein sind, was mich aber stört, ist, dass bei der Zeit für die rekursive Berechnung bei beiden das gleiche rauskommt (fakultaetrekursiv ist immer exakt 1 größer)
die berechnungen der funktionswerte an sich stimmen, nur die zeiten eben nicht
danke schonmal im vorraus für die hilfe
ich soll die n-te fibonaccizahl, und n! (n Fakultät) jeweils iterativ und rekursiv berechnen und für jeden vorgang die dauer bestimmen.
was ich hab ist dashier:
Java:
public class Rekursion{
long zeit = 0;
// Gibt die Zeit (in ms) zurück die für die letzte Berechnung nötig war.
public long getLastRuntime(){
return zeit;
}
// Nicht rekursive Berechnung der n-ten Fibonacci Zahl.
public long Fibonacci( int n){
zeit = System.currentTimeMillis();
long fib = 0;
for(long fib1 = 0, fib2 = 1, i=2; i <= n; i++){
fib = fib1 + fib2;
fib1 = fib2;
fib2 = fib;
}
zeit = System.currentTimeMillis()-zeit;
return fib;
}
// Rekursive Berechnung der n-ten Fibonacci Zahl.
public long FibonacciRekursiv( int n){
zeit = System.currentTimeMillis();
long fib = 0;
if(n == 0){
fib = 0;
}
if(n == 1){
fib = 1;
}
else if(n >= 2){
fib = FibonacciRekursiv(n-1) + FibonacciRekursiv(n-2);
}
zeit = System.currentTimeMillis()-zeit;
return fib;
}
// Rekursive Berechnung von n!.
public long FakultaetRekursiv( int n){
zeit = System.currentTimeMillis();
long fak = 1;
if(n >= 2){
fak = Fakultaet(n-1)*n;
}
zeit = System.currentTimeMillis()-zeit;
return fak;
}
// Nicht rekursive Berechnung von n!.
public long Fakultaet( int n){
zeit = System.currentTimeMillis();
long fak = 1;
for(int k = 2; k <= n; k++){
fak = fak * k;
}
zeit = System.currentTimeMillis()-zeit;
return fak;
}
}
für die zeit iterativ berechnen er mir meistens 0 ... wahrscheinlich weil die benutzen zahlen zu klein sind, was mich aber stört, ist, dass bei der Zeit für die rekursive Berechnung bei beiden das gleiche rauskommt (fakultaetrekursiv ist immer exakt 1 größer)
die berechnungen der funktionswerte an sich stimmen, nur die zeiten eben nicht
danke schonmal im vorraus für die hilfe