cela peut-il être fait sans que les boucles?
static void Main(string[] args) { Console.WriteLine("Please enter a number"); int number = Convert.ToInt32(Console.ReadLine()); Console.WriteLine(" #" + Fibonacci(number)); } public static int Fibonacci(int number) { if (number <= 1) { return 1; } else { return Fibonacci(number - 2) + Fibonacci(number - 1); } }
12 Réponses :
Je n'ai pas trouvé de moyen de le faire le moyen le plus proche de combiner les deux boucles + Récursion
static void Main(string[] args) { Console.WriteLine("Please enter a number"); int number = Convert.ToInt32(Console.ReadLine()); for(int counter=0;counter<number;counter++) Console.WriteLine(" \n" + Fibonacci(counter) ); } public static int Fibonacci(int number) { if (number == 0) return 0; else if(number ==1) return 1; else { return Fibonacci(number - 2) + Fibonacci(number - 1); } }
Si (numéro <0) jette une nouvelle argumentoutofrangeException ();
static void Main(string[] args) { Console.WriteLine("Please enter a number"); int number = Convert.ToInt32(Console.ReadLine()); Fibonacci(0, 1, 1, number); } public static void Fibonacci(int a, int b, int counter, int number) { Console.WriteLine(a); if (counter < number) Fibonacci(b, a+b, counter+1, number); }
Public statique Void Fibonacci (int A, int B, int numéro) {console.writine (a); Si (numéro> 1) Fibonacci (B, A + B, -Number); } code>
namespace Algorithms { class Program { static void Main(string[] args) { string fibResult = ""; fibResult = FibCal(10); Console.WriteLine(fibResult); Console.ReadLine(); } public static string FibCal(int n) { string series = ""; int k, f1, f2 , f = 0; f1 = f2 = 1; if (n < 2) return n.ToString(); else for (k = 0; k < n; k++) { f = f1 + f2; f2 = f1; f1 = f; series += f.ToString() + ","; } return series; } } } Hope this helps
Que pour code> mot-clé semble un terrain affreux comme une boucle.
Bien ce n'est pas récursif comme
Utiliser la récursion de cette mode est une très mauvaise idée. Cela causera des problèmes de mémoire très rapidement. Je sais que vous voulez éviter d'utiliser pendant / pour les boucles, mais un tableau est vraiment le meilleur moyen d'aller. P>
public static int Fibonatchi(int position) { if(position == 0) { return 1; } if(position == 1) { return 1; } else { return Fibonatchi(position - 2) + Fibonatchi(position - 1); } }
à l'aide de LINQ
public static void fibSeriesEx3() { List<int> lst = new List<int> { 0, 1 }; for (int i = 0; i <= 10; i++) { int num = lst.Skip(i).Sum(); lst.Add(num); foreach (int number in lst) Console.Write(number + " "); Console.WriteLine(); } }
C'est un moyen de le faire en retournant une valeur dans la principale.
Void public statique principal () { p>
Console.WriteLine(Fibo(num1, num2, counter)); } public static int Fibo(int num1, int num2, int counter) { int temp = num1; if (counter <= 0) return num2; else return Fibo(num1 = num2, num2 += temp, counter-1); }
public static class Golden { public static IEnumerable<long> Fibonacci() { var a = 0L; var b = 1L; var s = 0L; yield return a; while (a < long.MaxValue - b) { yield return b; s = a + b; a = b; b = s; } } public static IEnumerable<long> FibonacciR() { IEnumerable<long> Fibo(long a, long b) { yield return a; if (a < long.MaxValue - b) { foreach (var v in Fibo(b, a + b)) { yield return v; } } } return Fibo(0, 1); } }
Je me rends compte que cela peut être un vieux fil, mais oh bien, je pense que cette question est bonne dans sa nature.
Utiliser tandis que la boucle / ou la manière récursive de faire n'est pas la manière optimale de faire comme il faut une (2 ^ n) fois. Un meilleur moyen de le faire consiste à utiliser ce qui est déjà en mémoire comme ci-dessous. Cela devrait prendre à la plupart des temps O (n). P>
acclamations! P>
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static int Main(string[] args) { int n, i = 0, c; Console.WriteLine("Enter the number of terms:"); n = Convert.ToInt16(Console.ReadLine()); Console.WriteLine("Fibonacci series\n"); for (c = 1; c <= n; c++) { int result = FibonacciFunction(i); Console.Write(result + " " ); i++; } Console.WriteLine(); return 0; } public static int FibonacciFunction(int n) { if (n == 0) { return 0; } else if (n == 1) { return 1; } else { return (FibonacciFunction(n - 1) + FibonacciFunction(n - 2)); } } } }
Il sera utile si vous pouvez expliquer une partie du code que vous avez écrit
solution simple et facile:
Utilisation d'un code de ligne:
public static int Fibonacci(int i) { return i <= 2 ? 1 : Fibonacci(i - 1) + Fibonacci(i - 2); }