import Foundation
func fibonacci(prevNumber: Int, number: Int, size: Int, i: Int) {
// Die Variable nextnumber wird für nächste Fibonacci Zahl deklariert.
var nextnumber : Int
/* Da die Zählung der Fibonacci Zahlen bei 0 beginnt, d.h. mit F_{0} = 0,
wird in der Fallunterscheidung size -1 verwendet, um die Zahl an den
Indexwert anzupassen. So hat die zwölft Fibonacci Zahl, die 89, den
Indexwert elf, also F_{11} = 89. */
if i < size - 1 {
/* Solange wie der Wert von der Variablen i kleiner als der Wert der
Variablen size - 1 ist, wird einer neuer Wert für die Variable
nextnumber berechnet. Dazu wird die Summe aus prevnumber und number
gebildet. */
nextnumber = prevNumber + number
/* Der Variablen prevnumber wird der Wert der Variablen number
zugewiesen, und dieser wird der Wert von nextnumber zugewiesen. */
prevNumber = number
number = nextnumber
// Der aktuelle Wert der Variablen nextnumber wird ausgegeben.
print(nextnumber)
// Die Variable i wird um 1 erhöht.
i = i + 1
// Nun wird die Funktion Fibonacci mit den neuen Werten erneut aufgerufen.
fibonacci(prevNumber: prevNumber, number: number, size: size, i: i)
}
}
/* Main
Fibonacci Zahlen sind so definiert:
F_{0} = 0, F_{1} = 1 und F_{n} = F_{n-1} + F_{n-2} für n > 1
Ausgehend von einem Start bei 0 und 1 lauten die ersten zwölf Werte der
Folge 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89.
Die Variablen prevnumber und number werden für die zwei Startwerte F_{0}
und F_{1} deklariert. Zu Beginn werden sie mit den Werten 0 beziehungsweise
1 initialisiert.
*/
var prevnumber : Int
prevnumber = 0
var number : Int
number = 1
/* Die Variable size bezeichnet die n-te Fibonacci Zahl, bis zu der die Ausgabe
der Fibonacci Zahlen erfolgen soll. */
var size : Int
print("Bitte geben Sie eine Zahl zwischen 2 und 93 ein")
size = Int(readLine()!)!
/* Damit die Fibonacci Zahlen nicht zu groß werden, ist hier eine Begrenzung bei
93 eingefügt worden. In der while Schleife wird geprüft, ob die Zahl kleiner
gleich 93 ist und ob sie größer als 0 ist. Da nur positive ganze Zahlen als
Eingabe möglich sind. */
while size > 93 || size < 0 {
print("Bitte geben Sie eine Zahl zwischen 2 und 93 ein")
size = Int(readLine()!)!
}
// Die Fibonacci Zahlen werden rekursiv mithilfe der Funktion Fibonacci berechnet.
print(prevnumber)
print(number)
// Die Fibonacci Zahlen werden rekursiv mithilfe der Funktion Fibonacci berechnet.
fibonacci(prevNumber: prevnumber, number: number, size: size, i: 1)