Итераторы, числа фибоначчи-выдает неверные результаты - 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...
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace progiter2
  6. {
  7. class Fibonacci
  8. {
  9. public System.Collections.Generic.IEnumerable<int> FuncFib(int size = 2)
  10. {
  11. if (size >= 2)
  12. {
  13. yield return 0;
  14. yield return 1;
  15. for (int n = 2; n < size; n++)
  16. {
  17. yield return (n - 1) + (n - 2);
  18. }
  19. }
  20. else
  21. {
  22. yield return -1;
  23. Console.WriteLine(" *Ошибка..");
  24. }
  25. }
  26. }
  27. class Program
  28. {
  29. static void Main(string[] args)
  30. {
  31. Fibonacci vFib = new Fibonacci();
  32. Console.WriteLine("Последовательность: ");
  33. foreach (int N in vFib.FuncFib(11))
  34. {
  35. Console.Write(" {0}",N);
  36. }
  37. Console.ReadKey();
  38. }
  39. }
  40. }
Все ребята, спасибо, я починил
Листинг программы
  1. if (size >= 2)
  2. {
  3. N = new int[size];
  4. yield return N[0] = 0;
  5. yield return N[1] = 1;
  6. for (int n = 2; n < size; n++)
  7. {
  8. yield return N[n] = N[n-1]+N[n-2];
  9. }
  10. }

Решение задачи: «Итераторы, числа фибоначчи-выдает неверные результаты»

textual
Листинг программы
  1.     public static IEnumerable<int> FuncFib(int size) {
  2.         int previous = 0, current = 1;
  3.         int i = 0;
  4.         while (i < size)
  5.         {
  6.             yield return previous;
  7.             int next = previous + current;
  8.             previous = current;
  9.             current = next;
  10.             i++;
  11.         }
  12.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы