Подобный этому вопрос был задан пару лет назад , но этот вопрос еще сложнее.
Задача проста. Напишите программу (в вашем языке по выбору) , который многократно выполняет код без использования каких - либо повторение структур , таких как while
, for
, do while
, foreach
или goto
( Так что для всех вас nitpickers, вы не можете использовать цикл ). Однако рекурсия не допускается в смысле, вызывающем функцию (см. Определение ниже) . Это сделало бы этот вызов слишком легким.
Нет никаких ограничений на то, что должно быть выполнено в цикле, но опубликуйте объяснение с вашим ответом, чтобы другие могли точно понять, что реализуется.
Для тех, кто может зацикливаться на определениях, определение цикла для этого вопроса:
A programming language statement which allows code to be repeatedly executed.
И определение рекурсии для этого вопроса будет вашим стандартным определением рекурсивной функции:
A function that calls itself.
Победителем будет ответ, который получил наибольшее количество голосов 16 июля в 10 часов утра по восточному времени. Удачи!
ОБНОВИТЬ:
Чтобы смягчить путаницу, которая все еще выражается, это может помочь:
Правила как указано выше:
- Не используйте петли или переход
- Функции не могут называть себя
- Делай, что хочешь в «петле»
Если вы хотите реализовать что-то, а правила явно не запрещают это, сделайте это. Многие ответы уже согнули правила.
rep(f){f();f();}
- это оператор (объявление функции - это оператор в некоторых языках), который позволяет выполнять код повторно. Это запрещено. Вы просите код для реализации цикла. Если этот код синтаксически является оператором, вы просто запретили его. Другой пример: f(b) { b(); g(b); }; g(b) { f(b); }
. Я бы сказал, f
что это рекурсивная функция (будучи взаимно рекурсивным с g
). Это запрещено?
function A
вызовыfunction B
иfunction B
вызовы,function A
пока одна из функций выполняет что-то. Поскольку функция не вызывает сама себя, она должна быть действительной на основе критериев ^. ^