Питання, подібне до цього, було задано пару років тому , але це ще складніше.
Завдання проста. Напишіть програму (в вашому мовою на вибір) , який багаторазово виконує код без використання будь - яких повторення структур , таких як 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 ранку за східним часом. Удачі!
ОНОВЛЕННЯ:
Заспокоїти розгубленість, яка все ще виражається, це може допомогти:
Правила, як зазначено вище:
- Не використовуйте циклів або goto
- Функції не можуть називати себе
- Робіть все, що завгодно, у "циклі"
Якщо ви хочете щось реалізувати, і правила цього прямо не забороняють, продовжуйте це робити. У багатьох відповідях правила вже зігнуті.
rep(f){f();f();}
- це оператор (функція декларації - це твердження на деяких мовах), що дозволяє виконувати код повторно. Це заборонено Ви запитуєте код для реалізації циклу. Якщо цей код є синтаксичним висловом, ви його просто заборонили. Інший приклад: f(b) { b(); g(b); }; g(b) { f(b); }
. Я б сказав f
, це рекурсивна функція (шляхом взаємної рекурсивності з g
). Це заборонено?
function A
дзвінкиfunction B
таfunction B
дзвінки,function A
тоді як 1 з функцій виконує щось. Оскільки функція не викликає себе, вона повинна бути дійсною на основі критеріїв ^. ^