Rajeshyadav12 Ответов: 1

Я хочу сгенерировать подмножество рядов Фибоначчи. Но я не получаю достаточно идей, чтобы сделать это. Любая помощь будет оценена по достоинству.


Хочу написать код для генерации подмножества fibonnaci. Но я получаю эту ошибку GenerateSubset не является типом интерфейса итератора.

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

public Task<IEnumerable<long>> GenerateSubset(int fromIndex, int toIndex)
    {
        int first =fromIndex;
        int second = fromIndex + 1;
        int third = 0;
        List<long> result = new List<long>();
        result.Add(first);
        result.Add(second);

        for (int i = fromIndex + 2; i <= toIndex - 1; i++)
        {
            third = first + second;
            result.Add(third);
            first = second;
            second = third;
        }
        yield return result;

    }

PIEBALDconsult

Возможно, вы не захотите, чтобы урожай был там. Или, может быть, вы захотите его переместить.

Rajeshyadav12

Если я удалю yield, то эта ошибка придет "не может неявно преобразовать тип" системы.Коллекции.Универсальный.Список<долго&ГТ;' к 'системе.Нарезание резьбы.Задачи.Задача< система.Коллекции.Общий.IEnumerable< long>>'

1 Ответов

Рейтинг:
1

Patrice T

Цитата:
GenerateSubset не является типом интерфейса итератора.

Я думаю, что компилятор недоволен тем, что GenerateSubset тип возврата-это Task<IEnumerable<long>> когда тип возвращаемого значения List<long>


Rajeshyadav12

@ppolymorphe, не могли бы вы предоставить мне решения?Я не собираюсь, насколько я знаю.Буду признателен, если вы предоставите мне некоторые решения.

Richard Deeming

Снять yield, и измените тип возвращаемого метода на IEnumerable<long>.

Но твоя работа еще не закончена. Код не будет работать, если fromIndex != 1 - вам нужно пересмотреть, как последовательность Фибоначчи[^] завод.