using System;
public class MyProgram
{
public static void Main(string[] args)
{
//
// 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 Variable size bezeichnet die n-te Fibonacci Zahl, bis zu der die Ausgabe der Fibonacci Zahlen erfolgen soll.
int size;
// 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. Im weiteren Verlauf werden sie für die Berechnung der Fibonaccizahlen weiter verwendet.
int prevnumber;
prevnumber = 0;
int number;
number = 1;
// Die Variable nextnumber wird für die neuen Fibonaccizahlen deklariert.
int nextnumber;
// Die Variable i wird deklariert, sie wird bei der Berechnung benötigt. Sie zeigt an, um die wievielte Fibonacci Zahl es handelt, da die ersten zwei bereits gesetzt sind, wird die Variable i mit dem Wert 2 initialisiert.
int i;
i = 2;
Console.WriteLine("Bitte geben Sie eine Zahl zwischen 2 und 93 ein");
size = (int) inputValue();
// Da die Fibonacci Zahlen sich mit jedem Schritt vergrößern, wird hier eine Begrenzung bei 93 eingefügt. Die while Schleife überprüft den Wert von size, und sollte der Wert von size größer als 93 sein, wird der Nutzer aufgefordert eine kleinere Zahl einzugeben. Es wird zudem geprüft, ob die eingegebene Zahl größer als 0 ist, da nur positive ganze Zahlen zulässig sind.
while (size > 93 || size < 0)
{
Console.WriteLine("Bitte geben Sie nur eine Zahl ein, die kleiner gleich 93 und größer als 0 ist: ");
size = (int) inputValue();
}
Console.WriteLine(prevnumber);
Console.WriteLine(number);
// Die Zahlen der Fibonacci Folge werden mithilfe einer while Schleife iterativ berechnet.
while (i < size)
{
// Solange der Wert der Variablen i kleiner als der von n ist, wird ein neuer Wert für die Variable nextnumber berechnet. Dafür wird die Summe der Werte der Variablen prevnumber und number gebildet. Und das Ergebnis ausgegeben.
nextnumber = prevnumber + number;
Console.WriteLine(nextnumber);
// Dann wird der Variable prevnumber der Wert von number zugewiesen und der Variablen number der Wert der Variablen nextnumber. Danach wird die Variable i um eins erhöht.
prevnumber = number;
number = nextnumber;
i = i + 1;
}
}
// .NET kann nur einzelne Zeichen oder ganze Zeilen aus der Konsole lesen.
// Die folgende Funktion löst das Problem.
private static double inputValue()
{
double result;
while (!double.TryParse(Console.ReadLine(), out result));
return result;
}
}