Ein typisches Beispiel verzweigter Rekursion liefert die Definition der Fibonaccizahlen f(n): Die ersten beiden Fibonaccizahlen liegen fest als f(1) = 1 und f(2) = 1. Fr n > 2 ist f(n) = f(n − 1) + f(n − 2), also die Summe der beiden vorhergehenden Fibonaccizahlen. Das folgende Programm setzt diese Definition direkt um. main gibt einige Elemente der Folge aus: public class Fibonacci { public long fib(int n) { if(n <= 2) return 1; return fib(n - 1) + fib(n - 2);} public static void main(String... args) { Fibonacci fibonacci = new Fibonacci(); for(int n = 1; n < rseInt(args[0]); n++) ("fib(%d) =%d%n", n, (n));}}: Verzweigte Rekursion zur Berechnung der Fibonaccizahlen. Fibonacci folge java web. Der Programmstart liefert die ersten Fibonaccizahlen: $ java Fibonacci 10 fib(1) = 1 fib(2) = 1 fib(3) = 2 fib(4) = 3 fib(5) = 5 fib(6) = 8 fib(7) = 13 fib(8) = 21 fib(9) = 34 Ab etwa vierzig Elementen bremst das Programm sprbar ab. Dabei spielt die Hardware keine allzu groe Rolle. Messung der Laufzeit und der Anzahl rekursiver Aufrufe Die folgende von abgeleitete Klasse zhlt die Anzahl der rekursiven Methodenaufrufe in der Objektvariablen calls mit.
Fibonacci Folge Java Web
out. println ( erg); // Ausgabe von erg. }}
Der Job, den der Algorithmus also ausführen soll, lautet:
Liefere die n-te Fibonacci-Zahl aus der Fibonacci-Reihe zurück. Hier nochmal die Fibonacci-Zahlen von der "nullten" bis zur achten:
0. 1. 2. 3. 4. 5. Java: Fibonacci-Zahlen im Java-Algorithmus :: falconbyte.net. 6. 7. 8....
0
1
2
3
5
8
13
21...
Den passenden Java-Algorithmus designen wir mit einer verzweigten rekursiven Methode:
public class RecursiveFibonacciSequence {
int x = getFibonacciNumberAt(5); // 5
(x);}
public static int getFibonacciNumberAt(int n) {
if (n < 2) {
return n;} else
return getFibonacciNumberAt(n - 1) + getFibonacciNumberAt(n - 2);}}
In die Methode getFibonacciNumberAt() geben wir als Argument die gewünschte n-te Fibonacci-Zahl der Reihe ein und erhalten den passenden Wert zurückgeliefert. So hat etwa die fünfte Fibonacci-Zahl den Wert 5. Die Methode ruft sich dabei jeweils zweimal selbst aufs Neue auf ( getFibonacciNumberAt(n - 1) und getFibonacciNumberAt(n - 2)), wobei die Anzahl der Methoden damit exponentiell ansteigt. Es kommt erst dann zu keinem weiteren Methodenaufruf, wenn die Abbruchbedingung n-2 erfüllt ist.
Fibonacci Folge Java Tutorial
Weiter hlt sie die Dauer der Berechnung fest. [15] Diese simple Laufzeitmessung liefert erst bei Zeitspannen von einigen Sekunden halbwegs reproduzierbare Werte und ist fr krzere Messungen schlecht geeignet. Das Betriebssystem, die JVM und andere Programme sind oft mit anderen Aufgaben beschftigt, wodurch kurze Zeitintervalle stark verflscht werden knnen. public class FibonacciInstrumented extends Fibonacci { private long calls; private final long startMillis = rrentTimeMillis(); public long fib(int n) { calls++; return (n);} public String toString() { return "millis = " + (rrentTimeMillis() - startMillis) + ", calls = " + calls;} public static void main(String... Fibonacci folge java tutorial. args) { for(int n = 1; n < rseInt(args[0]); n++) { Fibonacci fibonacci = new FibonacciInstrumented(); ("fib(%d) =%d, %s%n", n, (n), fibonacci);}}}: Berechnung der Fibonaccizahlen mit Protokoll der Aufrufe. Hohe Anzahl rekursiver Aufrufe Ein Start des instrumentierten Programms bringt ans Licht, dass die Anzahl der rekursiven Aufrufe und die Laufzeiten selbst eine Art Fibonaccifolge bilden.
Die Fibonacci-Folge ist eine unendliche Folge von Zahlen (den Fibonacci-Zahlen), bei der sich die jeweils folgende Zahl durch Addition der beiden vorherigen Zahlen ergibt: 0, 1, 1, 2, 3, 5, 8, 13, … Benannt ist sie nach Leonardo Fibonacci, der damit 1202 das Wachstum einer Kaninchenpopulation beschrieb. Fibonacci folge java login. Die Reihe war aber schon in der indischen und westlichen Antike bekannt. Erklärung
Alle nötigen Erklärungen finden Sie als Kommentar im Quelltext. Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Fibonacci {
public static void main ( String [] args) {
int a = 1; // erste Zahl
int b = 1; // zweite Zahl
int n = Integer. parseInt ( args [ 0]); // die Fibonacci Zahl
int i = 2; // Laufvariable beginnt bei zwei weil in if- Teil die ersten 2 Zahlen schon ausgegeben werden
int erg = 0;
if ( n <= 1) { // if Teil weil die ersten zwei Zahlen vorgegeben werden müssen um die Summe der beiden Vorgänger zu bilden
erg = 1;} else {
while ( i <= n) { // i läuft bis zur Zahl
erg = a + b; // erg = die ersten beiden Zahlen
a = b; // gleich setzten von a und b
b = erg; // b auf erg setzen damit die Summe der beiden Vorgänger gebildet werden
i ++; // i wird um 1 erhöht und läuft bis n}}
System.
Fibonacci Folge Java Login
Java Tutorial (Deutsch): Beispiel For Schleife Fibonacci Zahlen - YouTube
Andernfalls ruft sich die Funktion erneut auf, indem sie den an sie übergebenen Parameter dekrementiert.