Итераторы, числа фибоначчи-выдает неверные результаты - C#
Формулировка задачи:
Вот суть задачи : Реализовать в виде последовательности генерацию первых N чисел Фибоначчи (N0=0, N1=1, Nn=Nn-1+Nn-2).
Подскажите, в чем моя ошибка. программа выдает неверные результаты, сама последовательность должна выглядеть так:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144..
У меня совсем по другому : 0,1,1,3,5,7,9,11,13...
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace progiter2 { class Fibonacci { public System.Collections.Generic.IEnumerable<int> FuncFib(int size = 2) { if (size >= 2) { yield return 0; yield return 1; for (int n = 2; n < size; n++) { yield return (n - 1) + (n - 2); } } else { yield return -1; Console.WriteLine(" *Ошибка.."); } } } class Program { static void Main(string[] args) { Fibonacci vFib = new Fibonacci(); Console.WriteLine("Последовательность: "); foreach (int N in vFib.FuncFib(11)) { Console.Write(" {0}",N); } Console.ReadKey(); } } }
Все ребята, спасибо, я починил
if (size >= 2) { N = new int[size]; yield return N[0] = 0; yield return N[1] = 1; for (int n = 2; n < size; n++) { yield return N[n] = N[n-1]+N[n-2]; } }
Решение задачи: «Итераторы, числа фибоначчи-выдает неверные результаты»
textual
Листинг программы
public static IEnumerable<int> FuncFib(int size) { int previous = 0, current = 1; int i = 0; while (i < size) { yield return previous; int next = previous + current; previous = current; current = next; i++; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д