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