Итераторы, числа фибоначчи-выдает неверные результаты - 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++;
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д