Предположим, у меня есть массив целых чисел, и мне нужно вернуть массив всех чисел, которые делятся на 3 по порядку.Фиксировать неизменный список рекурсивно
Я дал интерфейс:
List<int> ListElementsDivisibleBy3Recursive(List<int> input)
Так он должен взять список и возвращает список, фильтровать и рекурсивно. Я пробовал выскакивать элементы из начала списка, пока не набрал число, соответствующее требуемому условию, и вот где я застрял. Я не знаю, как перейти к следующему элементу и сохранить элемент, соответствующий условию. Это то, что я до сих пор:
static List<int> ListElementsDivisibleBy3Recursive(List<int> input)
{
if (input.Count == 0)
return input;
else if (input.ElementAt(0) % 3 == 0)
{
return ListElementsDivisibleBy3Recursive(input); <--I have no idea what to do here
}
else
{
input.RemoveAt(0);
return ListElementsDivisibleBy3Recursive(input);
}
}
Было бы намного проще, если бы мне было позволено передать указатель на позицию в списке я на, но все у меня есть список входных и возвращение список для работы. Как удалить элементы в списке, сохранив те, которые соответствуют условию? Или я все об этом ошибаюсь? Не знаю, как я должен это делать логически. Я также понимаю, что мое базовое условие ошибочно.
Попытка решить эту проблему с рекурсией .... это плохая идея. Я имею в виду, ты мог бы это сделать. но почему? – BradleyDotNET
Чтобы сделать это проще, создайте новый список, и в течение цикла вы можете добавить целые числа, делящиеся на 3 в этот новый список. После этого вы можете отсортировать новые значения списка. Чтобы сделать это еще проще, вы можете сделать это с помощью одного оператора LINQ. – ps2goat
вы продолжаете использовать слово 'array', и все же вы фактически работаете со списками. Также обратите внимание, что для решения такой проблемы рекурсивно действительно имеет смысл только в том случае, если ваша структура данных является чем-то вроде неизменяемого связанного списка, а не измененного массива. – Servy