In un test parziale per la preparazione di GATE c'era una domanda:
f(n):
if n is even: f(n) = n/2
else f(n) = f(f(n-1))
Ho risposto "Terminerà per tutti i numeri interi", perché anche per alcuni numeri interi negativi, verrà terminato come Errore di overflow dello stack .
Ma il mio amico non era d'accordo nel dire che poiché questo non è un codice implementato e solo uno pseudocodice, sarà una ricorsione infinita in caso di numeri interi negativi.
Quale risposta è corretta e perché?
while (true);
non verrà terminato né, in alcun modo sensato, causerà l'overflow dello stack.
while(true);
in modo da utilizzare qualsiasi stack non sarebbe assolutamente sensata . Il punto è che, a meno che tu non abbia intenzionalmente fatto di tutto per essere imbarazzante, while(true);
non terminerà né scatenerà l'overflow dello stack.