Una domanda simile a questa è stata posta un paio di anni fa , ma questa è ancora più complicata.
La sfida è semplice Scrivere un programma (in lingua di propria scelta) che esegue più volte il codice senza l'uso di strutture di ripetizione, come while
, for
, do while
, foreach
o goto
( Quindi per tutti voi nitpickers, non è possibile utilizzare un ciclo ). Tuttavia, la ricorsione non è consentita, nella funzione che si chiama senso (vedi definizione sotto) . Ciò renderebbe questa sfida troppo semplice.
Non ci sono restrizioni su ciò che deve essere eseguito nel ciclo, ma pubblica una spiegazione con la tua risposta in modo che gli altri possano capire esattamente ciò che viene implementato.
Per coloro che possono essere attaccati alle definizioni, la definizione di un ciclo per questa domanda è:
A programming language statement which allows code to be repeatedly executed.
E la definizione di ricorsione per questa domanda sarà la definizione di funzione ricorsiva standard:
A function that calls itself.
Il vincitore sarà la risposta con il maggior numero di voti il 16 luglio alle 10, ora orientale. In bocca al lupo!
AGGIORNARE:
Per calmare la confusione ancora espressa, ciò può aiutare:
Regole come sopra indicato:
- Non usare loop o goto
- Le funzioni non possono chiamarsi
- Fai quello che vuoi nel 'loop'
Se vuoi implementare qualcosa e le regole non lo vietano esplicitamente, vai avanti e fallo. Molte risposte hanno già piegato le regole.
rep(f){f();f();}
- questa è un'istruzione (una dichiarazione di funzione è un'istruzione in alcune lingue) che consente l'esecuzione ripetuta del codice. È vietato. Richiedi il codice per implementare un ciclo. Se quel codice è sintatticamente un'istruzione, l'hai appena vietato. Un altro esempio: f(b) { b(); g(b); }; g(b) { f(b); }
. Direi che f
è una funzione ricorsiva (essendo reciprocamente ricorsivi g
). È vietato?
function A
chiamatefunction B
efunction B
chiamatefunction A
mentre 1 delle funzioni esegue qualcosa. Poiché la funzione non si chiama da sola, dovrebbe essere valida in base ai criteri ^. ^