Hallo,
ich würde gerne in meinem programm meine vergleichsoperationen und arithmetischen Operationen zählen und diese auch auf der console ausgeben. Ich habs auch schon implementiert aber irgendwie bekomme ich da immmer nur null heraus ;( und das kann ja nicht stimmen. Würde mich sehr freuen wenn mir jemand bei meinem weiter helfen könnte.
ach ja, kann das mit den Zeiten stimmen das die so deutlich von einander abweichen?
ich würde gerne in meinem programm meine vergleichsoperationen und arithmetischen Operationen zählen und diese auch auf der console ausgeben. Ich habs auch schon implementiert aber irgendwie bekomme ich da immmer nur null heraus ;( und das kann ja nicht stimmen. Würde mich sehr freuen wenn mir jemand bei meinem weiter helfen könnte.
Code:
public class Fibo {
int aritRecur;
int vergleicheRecur;
/* Main-Methode zum Testen*/
public static void main(String[] args) {
/*ITERATIV*/
Fibo fiboIter = new Fibo();
long summe = 0;
int durchlaeufe = 10;
/*Zuweisung über eine Schleife*/
for (int a = 0; a < durchlaeufe; a++) {
long startzeit=System.nanoTime();
fiboIter.fibIterative(30);
long endzeit=System.nanoTime();
long duration=endzeit-startzeit;
summe = summe + (int)duration;
}
System.out.println("Durchschnitt Iterativ: "+(double)summe/(double)durchlaeufe+" ns");
/*REKURSIV*/
Fibo fiboRek = new Fibo();
long summe1=0;
for (int a = 0; a < durchlaeufe; a++) {
long startzeit=System.nanoTime();
fiboRek.fibRecursive(30);
long endzeit=System.nanoTime();
long duration=endzeit-startzeit;
summe1 = summe1 + (int)duration;
}
System.out.println("Durchschnitt Rekursiv: "+(double)summe1/(double)durchlaeufe+" ns");
Fibo zähler = new Fibo();
System.out.println(zähler.aritRecur);
System.out.println(zähler.vergleicheRecur);
}
/**
* Berechnet die n-te Fibonacci-Zahl rekursiv.
*
* @param n
* Die zu berechnende Fibonacci-Zahl.
* @return Wert der zu berechnenden Fibonacci-Zahl.
*/
public int fibRecursive(final int n) {
/*pro Vergleich von n==0 wird der Vergleichsrechner um eins hochgesetzt*/
vergleicheRecur++;
if (n == 0) {
return n;
}
/* pro Vergleich von n==1 wird der Vergleichsrechner um eins hochgesetzt*/
vergleicheRecur++;
if (n == 1) {
return n;
}
/*Zähler von arithmetischen Operationen wird um drei hochgesetzt, da
* (n-1)+(n-2) drei solche Operatoren enthält*/
aritRecur=aritRecur + 3;
return fibRecursive(n - 1) + fibRecursive(n - 2);
}
/**
* Berechnet die n-te Fibonacci-Zahl iterativ.
*
* @param n
* Die zu berechnende Fibonacci-Zahl.
* @return Wert der zu berechnenden Fibonacci-Zahl.
*/
public int fibIterative(final int n) {
int ergebnissFibo=0;
for (int k=0; k<10; k++) {
int currentFib = 0;
int nextFib = 1;
for (int i = 0; i < n; i++) {
int tmp = nextFib;
nextFib = currentFib + nextFib;
currentFib = tmp;
}
ergebnissFibo=currentFib; //return currentFib;
}
return ergebnissFibo;
}
}
ach ja, kann das mit den Zeiten stimmen das die so deutlich von einander abweichen?