Maison >développement back-end >Tutoriel C#.Net >Série de Fibonacci en C#
La série Fibonacci en C# dans la série Fibonacci est l'une des célèbres séries de séquences. La séquence est 0, 1, 1, 2, 3, 5, 8…. La série de Fibonacci commence à partir de zéro et un et le nombre suivant est la somme des deux nombres précédents. On dit que la série Fibonacci a été créée par M. Leonardo Pisano Bigollo au 13ème siècle. La série de Fibonacci est utile dans certains scénarios. Fondamentalement, il était à l’origine utilisé pour résoudre le problème des lapins, c’est-à-dire le nombre de lapins nés d’un couple. Il existe également d'autres problèmes dans lesquels la séquence de Fibonacci est utile.
Comme dans la série de Fibonacci, le nombre est la somme de ses deux nombres précédents. Donc, si nous avons une série de Fibonacci, disons 0, 1, 1, 2, 3, 5, 8, 13, 21… D'après ce nombre suivant, ce serait la somme de ses deux précédents comme 13 et 21. Donc le nombre suivant est 13. +21=34.
Voici la logique pour générer des séries de Fibonacci
F(n)= F(n-1) +F(n-2)
Où F(n) est le numéro du terme et F(n-1) +F(n-2) est une somme des valeurs précédentes.
Donc si nous avons les séries 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89…
Selon la logique F(n)= F(n-1) +F(n-2)
F(n)= 55+89
F(n)= 144
Le prochain mandat serait 144.
Les séries de Fibonacci peuvent être générées de plusieurs manières.
Cette méthode est la manière la plus simple de générer des séries.
Code :
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(); } } }
C'est une autre méthode pour résoudre ce problème.
Méthode 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(); } } }
Méthode 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(); } } }
Sortie :
Code :
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); } } }
Sortie :
Voici les méthodes
Code :
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(); } } }
Le code ci-dessus sert à trouver le nième terme de la série de Fibonacci. Par exemple, si nous voulons trouver le 12ème terme de la série alors le résultat serait 89.
(O(Log t) Heure).
Il existe une autre formule de récurrence qui peut être utilisée pour trouver le nombre de Fibonacci Si t est pair alors = t/2 :
F(t) = [2*F(k-1) + F(k)]*F(k)
Si t est impair alors k = (t + 1)/2
F(t) = F(k)*F(k) + F(k-1)*F(k-1)
Matrice de Fibonacci
Après avoir obtenu le déterminant, nous obtiendrons (-1)t = Ft+1Ft-1 – Ft2
FmFt + Fm-1Ft-1 = Fm+t-1
En mettant t = t+1,
FmFt+1 + Fm-1Ft = Fm+t
Mettre m = t
F2t-1 = Ft2 + Ft-12
F2t = (Ft-1 + Ft+1)Ft = (2Ft-1 + Ft)Ft
Pour obtenir la formule, nous ferons ce qui suit
Si t est pair, mettez k = t/2
Si t est impair, mettez k = (t+1)/2
Ainsi, en triant ces nombres, nous pouvons empêcher l'utilisation constante de l'espace mémoire de STACK. Cela donne une complexité temporelle de O(n). L'algorithme récursif est moins efficace.
Code :
int f(n) : if( n==0 || n==1 ) return n; else return f(n-1) + f(n-2)
Maintenant, lorsque l'algorithme ci-dessus s'exécute pour n=4
fn(4)
f(3) f(2)
f(2) f(1) f(1) f(0)
f(1) f(0)
Donc c’est un arbre. Pour calculer f(4), nous devons calculer f(3) et f(2) et ainsi de suite. Pour une petite valeur de 4, f(2) est calculé deux fois et f(1) est calculé trois fois. Ce nombre d'ajouts augmentera pour les grands nombres.
Il existe une conjecture selon laquelle le nombre d'additions requis pour calculer f (n) est f (n+1) -1.
Ici, la méthode itérative est toujours préférée car elle a une approche plus rapide pour résoudre ce genre de problème. Ici, nous stockons le premier et le deuxième nombre de la série de Fibonacci dans le numéro précédent et le numéro précédent (ce sont deux variables) et nous utilisons également le numéro actuel pour stocker le numéro de Fibonacci.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!