Dimenticavo: senza contare che l'algoritmo ricorsivo ha un limite tecnologico alle chiamate che può eseguire.
Infatti, ad un certo punto le chiamate dell'algoritmo ricorsivo finiscono lo stack e il programma va in crash.
Prova ad eseguire questo inutilissimo esempio:
Vedrai che l'algoritmo ricorsivo non è in grado di contare nemmeno 1 milione di numeri.codice:#include <iostream> using namespace std; void rec_countdown(int n) { cout << n << ' '; if (n == 0) return; else rec_countdown(n - 1); } void iter_countdown(int n) { for (int i = n; i >= 0; --i) cout << i << ' '; return; } int main() { int n = 1000000; //Uncomment the proper lines to run the test you want //rec_countdown(n); //iter_countdown(n); return 0; }

Rispondi quotando