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