Úvod do série Fibonacci v C #

Séria Fibonacci v C # v sérii Fibonacci je jednou zo slávnych sekvenčných sérií. Poradie je 0, 1, 1, 2, 3, 5, 8…. Fibonacciho séria začína od nuly a jedna a ďalšie číslo je súčet dvoch predchádzajúcich čísel. Hovorí sa, že séria Fibonacci, ktorú vytvoril pán Leonardo Pisano Bigollo v 13. storočí. Fibonacciho séria je užitočná pre niektoré scenáre. V zásade sa pôvodne používala na riešenie problému králikov, tj počtu králikov narodených z páru. Existujú aj ďalšie problémy, pri ktorých je užitočná sekvencia Fibonacci.

Logika série Fibonacci

Rovnako ako v sérii Fibonacci je číslo súčtom dvoch predchádzajúcich čísel. Takže ak máme Fibonacciho sériu, povedzme 0, 1, 1, 2, 3, 5, 8, 13, 21 … Podľa tohto nasledujúceho čísla by bola súčet jeho predchádzajúcich dvoch rád 13 a 21. Takže ďalšie číslo je 13 + 21 = 34.

Toto je logika generovania série Fibonacci

F (n) = F (n-1) + F (n-2)

Kde F (n) je číslo termínu a F (n-1) + F (n-2) je súčet predchádzajúcich hodnôt.

Takže ak máme série 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 …

Podľa logiky F (n) = F (n-1) + F (n-2)

F (n) = 55 + 89

F (n) = 144

Ďalší termín bude 144.

Rôzne metódy vytvárania série Fibonacci

Fibonacciho sériu je možné generovať rôznymi spôsobmi

1. Iteratívny prístup

Týmto spôsobom je najjednoduchší spôsob, ako generovať série.

kód:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespaceFibonacciDemo
(
classProgram
(
staticint Fibonacci(int n)
(
intfirstnumber = 0, secondnumber = 1, result = 0;
if (n == 0) return 0; //It will return the first number of the series
if (n == 1) return 1; // it will return the second number of the series
for (int i = 2; i<= n; i++) // main processing starts from here
(
result = firstnumber + secondnumber;
firstnumber = secondnumber;
secondnumber = result;
)
return result;
)
staticvoid Main(string() args)
(
Console.Write("Length of the Fibonacci Series: ");
int length = Convert.ToInt32(Console.ReadLine());
for(int i = 0; i< length; i++)
(
Console.Write("(0) ", Fibonacci(i));
)
Console.ReadKey();
)
)
)

2. Rekurzívna metóda

Toto je ďalší spôsob riešenia tohto problému.

Metóda 1

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespaceFibonacciDemo
(
classProgram
(
staticint Fibonacci(int n)
(
intfirstnumber = 0, secondnumber = 1, result = 0;
if (n == 0) return 0; //it will return the first number of the series
if (n == 1) return 1; // it will return the second number of the series
return Fibonacci(n-1) + Fibonacci(n-2);
)
staticvoid Main(string() args)
(
Console.Write("Length of the Fibonacci Series: ");
int length = Convert.ToInt32(Console.ReadLine());
for(int i = 0; i< length; i++)
(
Console.Write("(0) ", Fibonacci(i));
)
Console.ReadKey();
)
)
)

Metóda 2

using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FibonacciSeries
(
class Program
(
public static void Fibonacci
(
int firstnumber,
int secondnumber,
int count,
int length,
)
(
if (count <= length)
(
Console.Write("(0) ", firstnumber);
Fibonacci(secondnumber, firstnumber + secondnumber, count + 1, length);
)
)
public static void Main(string() args)
(
Console.Write("Length of the Fibonacci Series: ");
int length = Convert.ToInt32(Console.ReadLine());
Fibonacci(0, 1, 1, length);
Console.ReadKey();
)
)
)

Výkon:

3. Fibonacci pomocou Array

kód:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class Program
(
public static int() Fibonacci(int number)
(
int() a = new int(number);
a(0) = 0;
a(1) = 1;
for (int i = 2; i < number; i++)
(
a(i) = a(i - 2) + a(i - 1);
)
return a;
)
public static void Main(string() args)
(
var b = Fibonacci(10);
foreach (var elements in b)
(
Console.WriteLine(elements);
)
)
)

Výkon:

Ako nájsť N-tý termín Fibonacciho série?

Nasledujú metódy

Metóda 1

kód:

using System;
namespace FibonacciSeries
(
class Program (
public static int NthTerm(int n)
(
if ((n == 0) || (n == 1))
(
return n;
)
else
(
return (NthTerm(n - 1) + NthTerm(n - 2));
)
)
public static void Main(string() args)
(
Console.Write("Enter the nth term of the Fibonacci Series: ");
int number = Convert.ToInt32(Console.ReadLine());
number = number - 1;
Console.Write(NthTerm(number));
Console.ReadKey();
)
)
)

Vyššie uvedený kód má nájsť n-tý člen v sérii Fibonacci. Napríklad, ak chceme nájsť 12. termín v rade, výsledok by bol 89.

Metóda 2

(O (Log t) Time).

Existuje jeden ďalší vzorec opakovania, ktorý sa môže použiť na nájdenie t'ého Fibonacciho čísla. Ak je t párne, potom = t / 2:

F (t) = (2 * F (k-1) + F (k)) * F (k)

Ak je t nepárne, potom k = (t + 1) / 2

F (t) = F (k) * F (k) + F (k-1) * F (k-1)

Fibonacciho matrica

Po získaní determinantu dostaneme (-1) t = Ft + 1Ft-1 - Ft2

FmFt + Fm-1Ft-1 = Fm + t-1

Zadaním t = t + 1,

FmFt + 1 + Fm-1Ft = Fm + t

Zadanie m = t

F2t-1 = Ft2 + Ft-12

F2t = (Ft-1 + Ft + 1) Ft = (2Ft-1 + Ft) Ft

Aby sme dostali vzorec, urobíme nasledujúce

Ak je t párne, uveďte k = t / 2

Ak t je nepárne, uveďte k = (t + 1) / 2

Zoradením týchto čísel teda môžeme zabrániť tomu, aby sa pamäťové miesto STACK neustále využívalo. Dáva časovú zložitosť O (n). Rekurzívny algoritmus je menej efektívny.

kód:

int f(n) :
if( n==0 || n==1 )
return n;
else
return f(n-1) + f(n-2)

Teraz, keď vyššie uvedený algoritmus beží pre n = 4

fn (4)

f (3) f (2)

f (2) f (1) f (1) f (0)

f (1) f (0)

Takže je to strom. Na výpočet f (4) musíme vypočítať f (3) a f (2) atď. Pre malú hodnotu 4 sa f (2) vypočíta dvakrát a f (1) sa vypočíta trikrát. Tento počet prírastkov sa bude zväčšovať o veľké množstvo.

Existuje domnienka, že počet prírastkov požadovaných na výpočet f (n) je f (n + 1) -1.

záver

Tu je vždy preferovaná iteračná metóda, pretože má rýchlejší prístup k riešeniu tohto druhu problému. Tu ukladáme prvé a druhé číslo série Fibonacci v predchádzajúcom čísle a predchádzajúcom čísle (jedná sa o dve premenné) a tiež aktuálne číslo používame na uloženie čísla Fibonacci.

Odporúčané články

Toto je príručka série Fibonacci v C #. Tu diskutujeme o logike série Fibonacci s rôznymi metódami a o tom, ako nájsť n-tý člen skupiny Fibonacci. Viac informácií nájdete aj v ďalších súvisiacich článkoch.

  1. Fibonacciho séria v C
  2. C # Kompilátory
  3. C # Príkazy
  4. C # Pre slučku
  5. Sprievodca sériami Fibonacci v jazyku C ++
  6. Séria Fibonacci v JavaScripte

Kategórie: