Итераторы, числа фибоначчи-выдает неверные результаты - 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++;
        }
    }

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


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

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

11   голосов , оценка 4.091 из 5
Похожие ответы