Vorlesung 5 / Aufgabe 1
This commit is contained in:
parent
c14cedfcd9
commit
a6205b597b
@ -1,81 +0,0 @@
|
||||
class Aufgabe {
|
||||
public static void main(String[] args) {
|
||||
|
||||
// Es gibt zwei Möglichkeiten die Fibunacci-Folge zu erstellen.
|
||||
// Dabei werden die ersten zwei Felder immer mit festen Werten definiert.
|
||||
// Variante 1: F0 = 0; F1 = 1
|
||||
// Variante 2: F0 = 1; F1 = 1
|
||||
// Alle Werte danach werden aber immer nach der gleichen Regel erstellt.
|
||||
// FN = FN-2 + FN-1
|
||||
|
||||
System.out.println("Iterativ:");
|
||||
iterativ(45);
|
||||
|
||||
System.out.println("Rekursiv:");
|
||||
rekursiv(0, 1, 45);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ermitteln der Fibonaccizahlen mit einer iterativen Lösung.
|
||||
* @param fields Die Anzahl der Felder welche mit Fibonaccizahlen gefüllt werden sollen.
|
||||
*/
|
||||
public static void iterativ(int fields) {
|
||||
|
||||
// Initialisieren der Folge. Die Größe der Folge gibt die Anzahl der Fibonaccizahlen an.
|
||||
int[] fibonaccifolge = new int[fields];
|
||||
|
||||
// Alle Felder der Folge initialisieren.
|
||||
// Die ersten zwei Zahlen müssen dabei fest definiert werden.
|
||||
// Die Felder werden dabei nach Variante 1 definiert.
|
||||
for(int i = 0; i < fibonaccifolge.length; i++) {
|
||||
if (i == 0 || i == 1) {
|
||||
fibonaccifolge[i] = i;
|
||||
} else {
|
||||
fibonaccifolge[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Für alle Felder danach kann dann eine Formel verwendet werden.
|
||||
for(int i = 2; i < fibonaccifolge.length; i++) {
|
||||
fibonaccifolge[i] = fibonaccifolge[i-1] + fibonaccifolge[i-2];
|
||||
}
|
||||
|
||||
// Ausgeben der Fibonaccifolge.
|
||||
for(int i = 0; i < fibonaccifolge.length; i++) {
|
||||
System.out.println(fibonaccifolge[i]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ermitteln der Fibonaccizahlen mit einer iterativen Lösung.
|
||||
* @param a Der Wert des Felds FN-2.
|
||||
* @param b Der Wert des Felds FN-1.
|
||||
* @param max Die Anzahl der Fibonaccizahlen welche ermittelt werden sollen.
|
||||
* @return Die ermittelte Fibonaccizahl.
|
||||
*/
|
||||
public static int rekursiv(int a, int b, int max) {
|
||||
|
||||
// Der Beginn der Fibonaccifolge muss mit bestimmten Werten initialisiert werden.
|
||||
// Die Werte werden dabei mit den Werten aus Variante 1 initialisiert.
|
||||
if((a == 0 && b == 0) || (a == 0 && b == 1)) {
|
||||
a = 0;
|
||||
b = 1;
|
||||
max -= 2;
|
||||
System.out.println(a);
|
||||
System.out.println(b);
|
||||
}
|
||||
|
||||
// Anzahl der Felder reduzieren.
|
||||
max--;
|
||||
|
||||
// Ausgeben der aktuellen Fibonaccizahl.
|
||||
System.out.println((a + b));
|
||||
|
||||
// Es werden so lange Fibonaccizahlen erstellt so lange noch Felder verfügbar sind.
|
||||
if(max > 0) {
|
||||
return rekursiv(b, a + b, max);
|
||||
} else {
|
||||
return a + b;
|
||||
}
|
||||
}
|
||||
}
|
57
VL05/Aufgabe01/Aufgabe01.java
Normal file
57
VL05/Aufgabe01/Aufgabe01.java
Normal file
@ -0,0 +1,57 @@
|
||||
package VL05.Aufgabe01;
|
||||
|
||||
/**
|
||||
* Vorlesung 5 / Aufgabe 1
|
||||
*
|
||||
* @author Sebastian Brosch
|
||||
*/
|
||||
public class Aufgabe01 {
|
||||
public static void main(String[] args) {
|
||||
final int MAX_NUMBER = 45;
|
||||
|
||||
// get all fibonacci numbers using a iterative solution.
|
||||
for (int i = 0; i < MAX_NUMBER; i++) {
|
||||
System.out.printf("Fibonacci Nr. %d: %d\n", (i + 1), iterativeFibonacci(i));
|
||||
}
|
||||
|
||||
// get all fibonacci numbers using a recursive solution.
|
||||
for (int j = 0; j < MAX_NUMBER; j++) {
|
||||
System.out.printf("Fibonacci Nr. %d: %d\n", (j + 1), recursiveFibonacci(j));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to get a specific fibonacci number using a iterative solution.
|
||||
*
|
||||
* @param nth The number of the fibonacci number.
|
||||
* @return The fibonacci number.
|
||||
*/
|
||||
private static int iterativeFibonacci(int nth) {
|
||||
int[] fib = { 1, 1 };
|
||||
|
||||
for (int i = 0; i <= nth; i++) {
|
||||
if (i < fib.length)
|
||||
continue;
|
||||
|
||||
int result = fib[0] + fib[1];
|
||||
fib[0] = fib[1];
|
||||
fib[1] = result;
|
||||
}
|
||||
|
||||
return fib[1];
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to get a specific fibonacci number using a recursive number.
|
||||
*
|
||||
* @param nth The number of the fibonacci number.
|
||||
* @return The fibonacci number.
|
||||
*/
|
||||
private static int recursiveFibonacci(int nth) {
|
||||
if (nth == 0 || nth == 1) {
|
||||
return 1;
|
||||
} else {
|
||||
return recursiveFibonacci(nth - 2) + recursiveFibonacci(nth - 1);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user