C# :: Aufgabe #296
8 Lösungen
Fibonacci-Folge - Berechnung der ersten 100 Zahlen (mit Schleife oder rekursiver Funktion)
Anfänger - C#
von Gnom
- 31.03.2020 um 00:35 Uhr
Berechne die ersten 100 Zahlen der Fibonacci-Folge (0, 1, 1, 2, 3, 5, 8, 13, ... vgl.: Fibonacci-Folge (Wikipedia))
Die Fibonacci-Folge beginnt mit den Zahen 0 und 1. Jede weitere Zahl der Folge wird durch Addition der beiden Vorhergehenden gebildet.
0
1
1 (=0+1)
2 (=1+1)
3 (=1+2)
5 (=2+3)
8 (=3+5)
13 (=5+8)
...
Die Aufgabe lässt sich mit einer relativ einfachen Schleife lösen.
Fortgeschrittene können sie auch mit einer rekursiven Funktion lösen.
Viel Erfolg!
Die Fibonacci-Folge beginnt mit den Zahen 0 und 1. Jede weitere Zahl der Folge wird durch Addition der beiden Vorhergehenden gebildet.
0
1
1 (=0+1)
2 (=1+1)
3 (=1+2)
5 (=2+3)
8 (=3+5)
13 (=5+8)
...
Die Aufgabe lässt sich mit einer relativ einfachen Schleife lösen.
Fortgeschrittene können sie auch mit einer rekursiven Funktion lösen.
Viel Erfolg!
Lösungen:
NET Core 3.x
f100 rekursiv wird wohl ein Weilchen dauern...
C#-Code
f100 rekursiv wird wohl ein Weilchen dauern...
using System;
using System.Linq;
namespace CS_Aufgabe_296_Fibonacci
{
class Program
{
static void Main(string[] args)
{
const int fn = 10;
Enumerable.Range(1, fn).Select(x => Fib(x)).ToList().ForEach(Console.WriteLine);
static int Fib(int x) => x > 1 ? Fib(x - 1) + Fib(x - 2) : x;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Fibonacci
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("100 Fibonacci-Zahlen\n");
int[] fibo = new int[100];
int zahl1 = 0, zahl2 = 1, zahl3;
for (int i = 0; i < fibo.Length; i++)
{
zahl3 = zahl1 + zahl2;
zahl1 = zahl2;
zahl2 = zahl3;
fibo[i] = zahl3;
}
for (int j = 0; j < fibo.Length; j++)
{
object ausgabe = fibo.GetValue(j);
Console.WriteLine(ausgabe.ToString());
}
Console.ReadLine();
}
}
}
using System;
using System.Collections.Generic;
namespace FibonacciRecursive
{
class Program
{
static void Main(string[] args)
{
ulong start1 = 0;
ulong start2 = 1;
List<ulong> fibo = new List<ulong>
{
start1,
start2
};
Fibonacci(ref start1, ref start2, fibo, 99);
int j = 0;
foreach (ulong f in fibo)
{
Console.WriteLine(j++ + ": " + f);
}
Console.ReadKey();
}
private static void Fibonacci(ref ulong start1, ref ulong start2, List<ulong> fibo, int n)
{
if (n < 0)
return;
ulong next = start1 + start2;
fibo.Add(next);
Fibonacci(ref start2, ref next, fibo, n - 1);
}
}
}
using System;
namespace Fibbonacci
{
class Program
{
static void Main()
{
Console.WriteLine(String.Join(',',Fibo(100)));
Console.ReadLine();
}
static ulong[] Fibo(int anzahl)
{
ulong[] fibo = new ulong[anzahl];
fibo[0] = 0;
fibo[1] = 1;
for(int i = 2; i < anzahl; i++)
{
fibo[i] = fibo[i - 1] + fibo[i - 2];
}
return fibo;
}
}
}
using System;
namespace Fibonacci
{
class Program
{
static void Main(string[] args)
{
int i;
ulong fibNeu, fibMittel, fibAlt;
fibNeu = 0;
fibMittel = 0;
fibAlt = 0;
for (i = 1; i <= 100; i++)
{
if (fibMittel == 0)
{
fibNeu = fibAlt + 1;
fibMittel = fibNeu;
Console.Write(fibNeu + ", ");
}
else
{
fibNeu = fibMittel + fibAlt;
fibAlt = fibMittel;
fibMittel = fibNeu;
Console.Write(fibNeu + ", ");
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Fibonacci
{
class Program
{
static void Main(string[] args)
{
ulong zahl1 = 0, zahl2 = 1, ergebnis;
Console.WriteLine($"Fib 1 = {zahl1}\nFib 2 = {zahl2}");
for (int i = 3; i <= 100; i++)
{
ergebnis = zahl1 + zahl2;
Console.WriteLine($"Fib {i} = {ergebnis}");
zahl1 = zahl2;
zahl2 = ergebnis;
}
Console.ReadKey();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Fibonacci_Folge
{
class Program
{
static void Main(string[] args)
{
ulong a = 0;
ulong b = 1;
int counter = 0;
Console.WriteLine(a);
Console.WriteLine(b);
while (counter <= 100)
{
counter++;
ulong c = b;
b += a;
a = c;
Console.WriteLine(b);
}
Console.Read();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Fibonacci_Folge
{
class Program
{
static void Main(string[] args)
{
ulong a = 0;
ulong b = 1;
int counter = 0;
Console.WriteLine(a);
Console.WriteLine(b);
while (counter <= 100)
{
counter++;
ulong c = b;
b += a;
a = c;
Console.WriteLine(b);
}
Console.Read();
}
}
}
