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:

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;
}
Vedrai che l'algoritmo ricorsivo non è in grado di contare nemmeno 1 milione di numeri.