Rajeshyadav12 Ответов: 2

Генерация последовательности Фибоначчи и создание для нее подмножеств


Я пытаюсь сгенерировать последовательность Фибоначчи, вычисляемую, начиная с массива [ 0, 1], и каждое последующее число вычисляется путем сложения двух чисел перед ним.. 0, 1, [0 + 1 =] 1, [1 + 1 =] 2, [1 + 2 =] 3, [2 + 3 =] 5, и так далее.

Два метода, которые я пытаюсь реализовать, приведены ниже, однако я сильно застрял в генерации подмножеств (GenerateSubset(params)). Любая помощь была бы действительно ощутима.

Что я уже пробовал:

public IEnumerable< long & gt; Generate()
{
int i, count, f1 = 0, f2 = 1, f3 = 0;
Приставка.Write ("введите лимит : ");
кол-во = инт.Разбор(Приставка.Линия чтения());
Приставка.WriteLine(f1);
Приставка.WriteLine(f2);
for (i = 0; i <= count; i++)
{
f3 = f1 + f2;
Приставка.WriteLine(f3);
f1 = f2;
f2 = f3;
}
Приставка.Линия чтения();
}



государственное задание&ЛТ;интерфейс IEnumerable&ЛТ;долго&ГТ;&ГТ; GenerateSubset(тип int fromindex полагается равным, тип int toIndex)
{
бросить новое исключение notimplementedexception();
}

Patrice T

определение "я сильно застрял"

2 Ответов

Рейтинг:
2

Zunayed Shahriar

Полное решение, если это то, что вы хотите

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication
{
    class Program
    {
        static IEnumerable<long> fibs = Enumerable.Empty<long>();
        static int count, fromIndex, toIndex;
        static void Main(string[] args)
        {
            while (true)
            {
                Generate();
                Console.Write(string.Format("Enter index range between 0 and {0}\n", count));
                Console.Write("Enter first index : ");
                fromIndex = int.Parse(Console.ReadLine());
                Console.Write("Enter last index : ");
                toIndex = int.Parse(Console.ReadLine());
                GenerateSubset(fromIndex, toIndex);
            }
        }
        public static void Generate()
        {
            int i;
            long f1 = 0, f2 = 1, f3 = 0;
            Console.Write("Enter the Limit : ");
            count = int.Parse(Console.ReadLine());
            //Console.WriteLine(f1);
            //Console.WriteLine(f2);
            fibs = fibs.Concat(new[] { f2 });
            Console.Write("Full sequence :\n");
            Console.WriteLine(f2);
            for (i = 0; i < count; i++)
            {
                f3 = f1 + f2;
                fibs = fibs.Concat(new[] { f3 });
                Console.WriteLine(f3);
                f1 = f2;
                f2 = f3;
            }
        }

        static public void GenerateSubset(int fromIndex, int toIndex)
        {
            for (int i = fromIndex; i <= toIndex; i++)
            {
                Console.WriteLine(fibs.ElementAt(i));
            }
            Console.WriteLine("\n");
        }
    }
}


Скриншот программы: http://imgur.com/ogER8oQ


Rajeshyadav12

Привет, Зунайед, Спасибо тебе за твой код. Но я хочу написать код таким образом, чтобы он прошел тестовые случаи. Я пришлю вам ссылку, которая даст вам более четкое представление о задаче. Пожалуйста, найдите ссылку: drive.google.com/open?id=0B_6Eur5JYu9_MDNfelVKOWswRGs и drive.google.com/open?id=0B_6Eur5JYu9_Y3BhZFdSbkpiWVE. Пожалуйста, пройдите через это один раз. Спасибо