Pytanie podobne do tego zostało zadane kilka lat temu , ale to jest jeszcze trudniejsze.
Wyzwanie jest proste. Napisz program (w wybranym języku), który wielokrotnie wykonuje kod bez użycia jakichkolwiek struktur powtarzania takich jak while, for, do while, foreachlub goto( Więc dla was wszystkich nitpickers, nie można użyć pętli ). Jednak rekursja jest niedozwolona, w funkcji wywołującej sens (patrz definicja poniżej) . To uczyniłoby to wyzwanie zdecydowanie zbyt łatwym.
Nie ma ograniczeń co do tego, co należy wykonać w pętli, ale opublikuj wyjaśnienie z odpowiedzią , aby inni mogli dokładnie zrozumieć, co jest wdrażane.
Dla tych, którzy mogą się rozłączyć z definicjami, definicja pętli dla tego pytania jest następująca:
A programming language statement which allows code to be repeatedly executed.
A definicja rekurencji dla tego pytania będzie twoją standardową definicją funkcji rekurencyjnej:
A function that calls itself.
Zwycięzcą zostanie odpowiedź, która uzyska najwięcej głosów poparcia 16 lipca o godzinie 10 czasu wschodniego. Powodzenia!
AKTUALIZACJA:
Aby uspokoić wciąż wyrażane zamieszanie, może to pomóc:
Zasady jak podano powyżej:
- Nie używaj pętli ani goto
- Funkcje nie mogą się nazywać
- Rób co chcesz w „pętli”
Jeśli chcesz coś zaimplementować, a reguły wyraźnie tego nie zabraniają, śmiało i zrób to. Wiele odpowiedzi już zagięło zasady.
rep(f){f();f();}- jest to instrukcja (deklaracja funkcji jest instrukcją w niektórych językach), która pozwala na wielokrotne wykonywanie kodu. Czy to niedozwolone? Pytasz o kod do implementacji pętli. Jeśli ten kod jest składniowo instrukcją, właśnie go zabroniłeś. Inny przykład: f(b) { b(); g(b); }; g(b) { f(b); }. Powiedziałbym, że fjest funkcją rekurencyjną (poprzez wzajemną rekurencję g). Czy to niedozwolone?



function Apołączeniafunction Bifunction Bwywołania,function Apodczas gdy jedna z funkcji coś wykona. Ponieważ funkcja nie nazywa się sama, powinna być poprawna na podstawie kryteriów ^. ^