Fibonacci mit durchschnittlicher Zeit

Status
Nicht offen für weitere Antworten.

xaja

Mitglied
Hallo ihrs,

ich hab ein problem ich muss jeweils (getrennt für die Methoden fibIterative und
fibRecursive) über 10 Iterationen hinweg die durchschnittliche Zeit, die für das
Ermitteln der Fibonacci-Zahl für Werte von 0 <= n <= 30 benötigt wird ermitteln und das soll ich dann in der Main-Methode ausgeben.

Und das ist mein Kunstwerk was ich so gemacht habe. Ich hoffe es kann mir jemand
weiter helfen

Code:
public class Fibo {
	

	// Main-Methode zum Testen
	public static void main(String[] args) {
				
		//Instanz
		Fibo fibo = new Fibo();
		System.out.println("Hier"+fibo.fibIterative(30));
		
		// Array
		long[] zeitspeicher = new long[10];
		
		
		//Zuweisung über eine Schleife
		for (int a = 0; a < zeitspeicher.length; a++) {
			long startzeit=System.currentTimeMillis();
			int result=fibo.fibIterative(30); 
			long endzeit=System.currentTimeMillis(); 
			long duration=endzeit-startzeit; 
			
			zeitspeicher[a]=duration+a;  
			System.out.println(duration);
		}
		
		//Ausgabe über Schleife
		/*for (long a : zeitspeicher) {
			
			System.out.println("da"+a/10);
		}*/
	}

	/**
	 * 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) {
		if (n == 0) {
			return n;
		}

		if (n == 1) {
			return n;
		}

		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; 
}
}
 

0001001

Bekanntes Mitglied
Der Fehler liegt darin, dass du versuchst in Millisekunden zu rechnen. Java erledigt die Aufgabe zu schnell, daher kommt da immer 0 ms raus. Nimm Nanosekunden.

Code:
public class Fibo {
	

	// Main-Methode zum Testen
	public static void main(String[] args) {
				
		//Instanz
		Fibo fibo = new Fibo();
		
		long summe = 0;
		int durchlaeufe = 10;
		
		//Zuweisung über eine Schleife
		for (int a = 0; a < durchlaeufe; a++) {
			long startzeit=System.nanoTime();
			fibo.fibIterative(30); 
			long endzeit=System.nanoTime(); 
			long duration=endzeit-startzeit; 
			summe = summe + (int)duration; 			
		}
		System.out.println("Durchschnitt: "+(double)summe/(double)durchlaeufe+" ns");
	
	}

	/**
	 * 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) {
		if (n == 0) {
			return n;
		}

		if (n == 1) {
			return n;
		}

		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; 
}
}
 

xaja

Mitglied
Danke für deine Hilfe :toll:
Ich hatte ja gar nicht so große Fehler oder ???:L
Aber wie kann ich denn jetzt die Zeit für der rekursiven Prozess ausgeben, ich
kann mit der Rekursion nicht viel anfangen. Deshalb bräuchte ich da mal
ne Starthilfe :D
 

0001001

Bekanntes Mitglied
Danke für deine Hilfe :toll:
Ich hatte ja gar nicht so große Fehler oder ???:L
Aber wie kann ich denn jetzt die Zeit für der rekursiven Prozess ausgeben, ich
kann mit der Rekursion nicht viel anfangen. Deshalb bräuchte ich da mal
ne Starthilfe :D

LOL!
Indem du einfach die Zeile
fibo.fibIterative(30);
ersetzt durch
fibo.fibRecursive(30);

Was das ganze wahrscheinlich zeigen soll: Für kleine Werte bspw. 30 ist die Rekursion wesentlich schneller als die iterative Variante aber tausch doch mal das 30 durch 3000 aus, dann siehts gleich anders aus.
 

xaja

Mitglied
Also hier hab ich meine Rekursivevariante, einfach nur die Zeile ersetzen geht ja nicht,
also geht schon aber ich bekomme ja immer nur dann entweder Iteration oder die
Rekursion auf die Console geliefert. Aber meine Rekursion dauert länger als meine Iteration. Stimmt das? ???:L

Code:
public class Fibo {
	

	// Main-Methode zum Testen
	public static void main(String[] args) {
		
		//ITERATIV		
		//Instanz
		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.fibRecursive(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");
		
	
	}

	/**
	 * 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) {
					
		if (n == 0) {
			return n;
		}

		if (n == 1) {
			return n;
		}
		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; 
}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Abwandlung der Fibonacci Folge Java Basics - Anfänger-Themen 3
T Fibonacci mit einer Hilfsmethode berechnen Java Basics - Anfänger-Themen 10
123456789sssssaaaa Which is the best way to Print Fibonacci Series in Java? Java Basics - Anfänger-Themen 3
jhCDtGVjcZGcfzug Fibonacci Zahlen rekursiv und iterativ Java Basics - Anfänger-Themen 21
J Fibonacci-Reihe Java Basics - Anfänger-Themen 12
G Fibonacci Zahlenreihe Fehler Java Basics - Anfänger-Themen 4
D Fibonacci overflow integer Java Basics - Anfänger-Themen 8
B Fibonacci Zahlen dynamische Programmierung Java Basics - Anfänger-Themen 7
N Dynamisches Programmieren/Fibonacci Java Basics - Anfänger-Themen 1
V Fibonacci Folge Java Basics - Anfänger-Themen 4
S Fibonacci Zahlen rekursiv Java Basics - Anfänger-Themen 1
A Fibonacci Zahlen Java Basics - Anfänger-Themen 1
M Methoden Fibonacci-Folge Java Basics - Anfänger-Themen 6
J Fibonacci -Folge rekursiv berechnen Java Basics - Anfänger-Themen 18
P Fibonacci -Verallgemeintert Java Basics - Anfänger-Themen 2
K Methoden Fibonacci in Array mit rekursiver Methoden Java Basics - Anfänger-Themen 19
M Fibonacci rekursiv mittels Cache Java Basics - Anfänger-Themen 17
T Stack Overflow - Rekursive Fibonacci Java Basics - Anfänger-Themen 10
K Fibonacci Zahlen Java Basics - Anfänger-Themen 3
B Fibonacci Zahlen rekursiv Array Java Basics - Anfänger-Themen 12
M Fibonacci-Folge mit while-Schleife Java Basics - Anfänger-Themen 4
P fibonacci - do while Statement Logik Fehler Java Basics - Anfänger-Themen 5
A Fibonacci-numbers Java Basics - Anfänger-Themen 9
K Rekursion Fibonacci Java Basics - Anfänger-Themen 3
J Fibonacci Zahlen berechnen Java Basics - Anfänger-Themen 3
Z Fibonacci rekursiv meine Erklärung stimmt so? Java Basics - Anfänger-Themen 2
Z Fibonacci Array Erklärung Java Basics - Anfänger-Themen 5
A Gerade Terme der Fibonacci-Folge aufsummieren Java Basics - Anfänger-Themen 12
M Fibonacci, Fakultaet, GGT Java Basics - Anfänger-Themen 9
C Fibonacci Zahlen Java Basics - Anfänger-Themen 7
J Ausgabe der fibonacci Zahlen Java Basics - Anfänger-Themen 4
S Fibonacci Folge Java Basics - Anfänger-Themen 34
D Fibonacci Java Basics - Anfänger-Themen 11
M Fibonacci-Linear und Rekursiv Java Basics - Anfänger-Themen 14
W Fibonacci Zahlenberechnung Java Basics - Anfänger-Themen 9
I Fibonacci-Folge , direkter Weg. Java Basics - Anfänger-Themen 5
G Fibonacci Algorithmus Java Basics - Anfänger-Themen 22
0 Fibonacci Zahlen seeeehr schnell berechnen Java Basics - Anfänger-Themen 9
S Fibonacci Rückrechnung! Java Basics - Anfänger-Themen 5
K Fibonacci Zahlen Java Basics - Anfänger-Themen 2
K Programmieren von den ersten 70 Fibonacci-Zahlen Java Basics - Anfänger-Themen 2
G fibonacci was stimmt an meinem code nicht? Java Basics - Anfänger-Themen 2
S Fibonacci Zahlenvergeich Java Basics - Anfänger-Themen 6
G Iterativer Algorithmus zur Berechnung der Fibonacci Zahlen Java Basics - Anfänger-Themen 1
P Fibonacci-Zahlen Java Basics - Anfänger-Themen 6
P Java Anfängeraufgabe: Durchschnittlicher Kaffeesäuregehalt (+Zusätzliches) Java Basics - Anfänger-Themen 3
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
S Wie Rechne ich die Zeit in ...L um? Java Basics - Anfänger-Themen 15
I Zahl aufrunden (Zeit) Java Basics - Anfänger-Themen 43
H Primzahlen finden - Zeit optimieren Java Basics - Anfänger-Themen 34
B Prüfen, ob Zeit Überschreitung Java Basics - Anfänger-Themen 2
I Nächstmögliche Zeit erhalten Java Basics - Anfänger-Themen 11
hello_autumn Zeit messen von ausgeführten Tools. Java Basics - Anfänger-Themen 1
B Nächster möglicher Tag bekommen / Nächste mögliche Zeit bekommen Java Basics - Anfänger-Themen 24
Y Warum aktualisiert die Zeit nicht? Java Basics - Anfänger-Themen 4
J Aktuelle Zeit in einer JavaFX Anwendung aktualisieren lassen Java Basics - Anfänger-Themen 4
S JButton soll für bestimmte Zeit verschwinden Java Basics - Anfänger-Themen 5
F actionPerformed() zur richtigen Zeit Java Basics - Anfänger-Themen 6
T Erste Schritte Schreiben Sie eine Klasse Zeit, die eine Zeitdauer in Minuten beschreibt. Die Anzahl Minuten verwalt Java Basics - Anfänger-Themen 3
F Zeit in Milli bis Mitternacht Java Basics - Anfänger-Themen 20
M Messandwendung nach Zeit und eigener Eingabe Java Basics - Anfänger-Themen 4
J Java Datum- Zeit Differenz bilden! Java Basics - Anfänger-Themen 4
N Server Zeit zur lokalen Zeit setzen. Java Basics - Anfänger-Themen 0
K Eine bestimmte Zeit, eine Schleife laufen lassen. Java Basics - Anfänger-Themen 4
N Zeit berechnen, die für eine Strecke benötigt wird Java Basics - Anfänger-Themen 3
S Threads Zu bestimmer Zeit Screenshot erstellen. Java Basics - Anfänger-Themen 2
M Zahlen verändern nach Zeit Java Basics - Anfänger-Themen 6
E Zeit zum bestimmten Datum in millisekunden berechnen Java Basics - Anfänger-Themen 5
H Methoden Stopwatch misst Zeit einer Methode nicht Java Basics - Anfänger-Themen 8
K Zeit auslesen von Timeserver einen Tag daneben Java Basics - Anfänger-Themen 11
S Zeit messe? Java Basics - Anfänger-Themen 8
L Zeit sekündlich aktualisieren Java Basics - Anfänger-Themen 7
S Zeit bestimmen Java Basics - Anfänger-Themen 4
E Algorithmen und Programmierung - Datum und Zeit ausgeben? Java Basics - Anfänger-Themen 8
J Aufgabe: Zeit in Sekunden Java Basics - Anfänger-Themen 9
F Einfache Klassen für Datum und Zeit Java Basics - Anfänger-Themen 3
K Zeit ablaufen lassen und nach Ablauf beenden Java Basics - Anfänger-Themen 5
M Zeit von microsekunden auf Format mm:ss Java Basics - Anfänger-Themen 13
G Methoden Zeit Umrechnungsfaktor Java Basics - Anfänger-Themen 2
M Reaktion auf bestimmte Zeit Java Basics - Anfänger-Themen 2
S Animation nach bestimmter Zeit ausführen Java Basics - Anfänger-Themen 3
F hat jmd Zeit mir bisschen zu helfen msn/skype Java Basics - Anfänger-Themen 10
R Kalender speichert keine Zeit Java Basics - Anfänger-Themen 2
F Zeit per Array "zurückdrehen" Java Basics - Anfänger-Themen 5
R Zeit kommt mir zu lange vor... Java Basics - Anfänger-Themen 7
C Ereignis nach einer gewissen Zeit Java Basics - Anfänger-Themen 10
C Falsche Zeit Java Basics - Anfänger-Themen 2
A Unix-Zeit verkürzen Java Basics - Anfänger-Themen 2
Z JScrollPane zeigt Zeit als Datum Java Basics - Anfänger-Themen 5
H Programm zu bestimmten Zeit ausführen Java Basics - Anfänger-Themen 3
R Stoppuhr: Zeit ermitteln und übergeben - Variable static?? Java Basics - Anfänger-Themen 6
G Umrechnung Zeit/Temperatur Java Basics - Anfänger-Themen 6
Luk10 Zeit-Aspekt in Java Java Basics - Anfänger-Themen 3
N zeit ausgeben Java Basics - Anfänger-Themen 5
C countdown/timer/Zeit warten lassen Java Basics - Anfänger-Themen 14
S Dynamisch Zeit auslesen Java Basics - Anfänger-Themen 11
S Kennt jemand die Default-Cache Zeit beim Java-Plugin? Java Basics - Anfänger-Themen 2
M Zeitdauer-Klasse (zeit in java) Java Basics - Anfänger-Themen 9
1 Zeit und Datum der Letzten Bearbeitung einer Datei auslesen Java Basics - Anfänger-Themen 3
L Zeit stoppen in mehreren Threads Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben