Нить ментов
В этой теме ваша задача - создать рекурсивную программу / функцию для генерации любых целочисленных рядов. Грабители попытаются найти более короткое нерекурсивное решение в теме Грабителей .
Краткий обзор задачи
Во многих языках рекурсивные функции могут значительно упростить задачу программирования. Тем не менее, синтаксические издержки для правильной рекурсии могут ограничивать ее применимость в коде-гольфе.
В копы будут создавать программу или функцию , принимая одно целое число n, которое будет генерировать первые nзаписи целочисленного ряда, используя только рекурсии 1 . Они также должны убедиться, что существует более короткий нерекурсивный способ генерации последовательности, чтобы пометить их запись как безопасную.
В разбойниках будут пытаться найти более короткую программу или функцию на том же языке, генерируя то же целое ряд, не используя рекурсии 2 .
Если представление полицейских не будет взломано в течение десяти дней (240 часов), полицейский докажет, что на самом деле можно было использовать более короткий нерекурсивный подход, раскрыв свое собственное решение. Затем они могут пометить свое представление как безопасное .
Победителем соревнования полицейских станет самое короткое (согласно code-golf ) представление на основе рекурсии, помеченное как безопасное.
Победителем конкурса грабителей станет грабитель, взломавший большинство решений.
1: он должен быть только рекурсивным в синтаксисе; Вам не нужно беспокоиться, например, об оптимизации хвостового вызова.
2: опять же, не рекурсивный в синтаксисе; поэтому вы не можете опубликовать рекурсивное решение и заявить, что оно скомпилировано в цикл благодаря оптимизации хвостового вызова.
Требования к подаче
Каждое представление будет принимать одно целое число n(от нуля до единицы). Затем отправка выведет или вернет первые nзаписи целочисленной серии по выбору. (обратите внимание, что этот целочисленный ряд не должен зависеть отn ). Метод ввода и вывода может отличаться между рекурсивным и нерекурсивным подходом. Целочисленный ряд может быть любым детерминированным рядом с длиной не менее 5. Ряд должен быть объяснен должным образом.
Ваше представление не должно работать для произвольно большого n, но должно работать по крайней мере n=5. Нерекурсивный подход должен быть способен работать, по крайней мере, так же, nкак рекурсивный подход, или до n=2^15-1того, что меньше.
Рекурсия
Ради этой задачи рекурсия определяется как создание желаемой последовательности с использованием функции (или подобной функции конструкции), которая вызывает себя (или вызывает последовательность функций, которая в конечном итоге вызывает сама себя; это включает в себя конструкции, подобные комбинатору Y). Глубина рекурсии должна уходить в бесконечность, а nв бесконечность. Нерекурсивный подход - это все, что не является рекурсивным.
nесли он теоретически верен, но его нельзя запустить из-за нехватки времени или памяти?
n=5должен быть вычислен
xforне доступен через какой-то импорт?), Поэтому, возможно, этот язык не может конкурировать.
forделается рекурсивный позади,forрекурсивный или цикл?