2015-11-15 9 views
5

Questa è una domanda che mi è stato chiesto oggi in un colloquio di lavoro:La fissazione di un bug in un ciclo For

un'occhiata al codice seguente:

int n=20; 
for (int i =0; i<n; i--) 
    print("*"); 

Hai il permesso di cambiare una e una sola carattere in modo che il ciclo funzioni esattamente 20 volte.

Non sono stato in grado di rispondere alla domanda. In un primo momento ho pensato di impostare i a 40, ma poi si rese conto che il 40 ins't più piccolo di 20.

mio intervistatore ha detto che sono 5 risposte diverse a questa domanda ...

Si prega di aiutarmi a trovare la risposte.

+0

Si noti che questo codice verrà eseguito per sempre. Il cambiamento è nella parte post-iterazione dell'istruzione for. –

+0

Questo non è javascript, né C# –

+1

Anche questa è una domanda di intervista follemente stupida - cosa significa rispondere a questo tuo intervistatore su di te? Non vuoi lavorare in un'azienda con un tale processo di intervista –

risposta

12

Scelgo

int n=20; 
for (int i =0; i<n; n--) 
print("*"); 
+0

Ben fatto sherlock! –

9

Un altro potrebbe essere:

int n=20; 
for (int i =0; -i<n; i--) 
    print("*"); 
+0

va bene anche ... ma si tratta di * cambiare *, * non aggiungere * char. ;) – nelek

+2

@nelek no sta cambiando con un carattere vuoto;) –

+0

sì ... :) .... Hai ragione anche tu :) – nelek

4

Questo fa il lavoro così:

int n=20; 
for (int i =0; i+n; i--) 
    print("*"); 

Supponendo che il linguaggio getta implicitamente interi a booleani, cioè tratta gli interi non zero come veri e gli zeri come falsi.