\n",
"\n",
"\n",
"Die **Fibonacci Zahlen** sind definiert als die Zahlen\n",
"\n",
"$\\quad F_n = F_{n - 1} + F_{n - 2}$\n",
"\n",
"So können nacheinander alle Zahlen aus den Werten $F_0 = 0$ und $F_1 = 1$ berechnet werden.\n",
"\n",
"In dieser Aufgabe geht es darum, die Fibonacci Zahlen zu berechnen und ihre Konvergenz zu prüfen."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### a) Explizite Berechnung\n",
"\n",
"Vervollständigen Sie unten stehendes Programm, um auch die zweite bis zehnte Fibonacci Zahl in eine entsprechende Variable zu speichern und auszugeben"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Berechnen der Fibonacci Zahlen\n",
"f_0 = 1\n",
"f_1 = 1\n",
"f_2 = f_1 + f_0\n",
"\n",
"#######################\n",
"# HIER STEHT IHR CODE #\n",
"#######################\n",
"\n",
"# Ausgeben der fibonacci Zahlen\n",
"println(f_0)\n",
"println(f_1)\n",
"println(f_2)\n",
"\n",
"#######################\n",
"# HIER STEHT IHR CODE #\n",
"#######################"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### b) Berechnung mittels `for` Schleife\n",
"\n",
"Um die ersten `N` Fibonacci Zahlen für ein großes `N` (z.B. `N`=30) zu berechnen ist der obige Ansatz nicht variabel genug. Stattdessen verwendet man eine Schleife (in diesem Falle die `for` Schleife) um eine hohe Anzahl an Wiederholungen des gleichen Algorithmus zu erzeugen. \n",
"\n",
"Vervollständigen Sie unten stehendes Programm, um erneut die ersten 10 Fibonacci Zahlen zu erzeugen. Die Ausgabe des Programms findet bereits statt."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# bis zu welchem N sind fibonacci Zahlen gewuenscht\n",
"N = 10\n",
"\n",
"# Startwerte fuer die ersten beiden Fibonacci Zahlen\n",
"f_0 = 1\n",
"f_1 = 1\n",
"# Ausgabe der ersten beiden Fibonacci Zahlen\n",
"println(f_0)\n",
"println(f_1)\n",
"\n",
"\n",
"# Die aktuelle Fibonacci Zahl\n",
"f_n = f_1 + f_0\n",
"# Die beiden letzten Fibonacci Zahlen f_{n-1} und f_{n-2}\n",
"f_nm1 = f_1\n",
"f_nm2 = f_0\n",
"\n",
"# Schleife fuer alle n von 2 bis N\n",
"for n in 2:N\n",
" \n",
" #######################\n",
" # HIER STEHT IHR CODE #\n",
" #######################\n",
" \n",
" # Ausgabe der n-ten Fibonacci Zahl\n",
" println(f_n)\n",
"end"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### c) Funktion zur Berechnung mittels `for` Schleife\n",
"\n",
"Ist man nur an der `N`-ten Fibonacci Zahl interessiert, so ist oben stehender Code mitunter zu umständlich, da er alle Fibonacci Zahlen vor `N` ebenfalls ausgibt.\n",
"\n",
"Ergänzen Sie die unten begonnene Funktionsdefinition um eine abgewandelte Version des in b) definierten Codes, sodass Sie eine Funktion erhalten, die die `N`-te Fibonacci Zahl in der Variable `f_n` speichert. Diese wird danach zurück an den Funktionsaufrufer gegeben. Die Funktion wird schließlich benutzt um einige Testzahlen auszugeben."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Funktion zum erzeugen der N-ten Fibonacci Zahl\n",
"function fibonacci(N)\n",
" \n",
" #######################\n",
" # HIER STEHT IHR CODE #\n",
" #######################\n",
" \n",
" # die N-te Fibonacci Zahl wird hier zurueckgegeben\n",
" return f_n\n",
"end\n",
"\n",
"# Ausgabe der 10ten Fibonacci Zahl\n",
"println(fibonacci(10))\n",
"# Ausgabe der 100ten Fibonacci Zahl\n",
"println(fibonacci(100))"
]
}
],
"metadata": {
"@webio": {
"lastCommId": "ca8d3a90ebcd40b58e935a6c2857d75d",
"lastKernelId": "baef8626-5a7f-47a6-9f96-0466f00ef131"
},
"kernelspec": {
"display_name": "Julia 1.0.0",
"language": "julia",
"name": "julia-1.0"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.0.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}