Vai a dirlo ai linguaggi fuzionali![]()
In ogni caso non è vero che un main ricorsivo non ha senso:
Tu hai una funzione che svolge un determinato compito, quando ti serve che quel compito venga svolto chiami quella funzione, quindi alla fine ha un senso logico chiamare la funzione ricorsivamente se alla fine di quella funzione ti serve che venga svolta quell'azione.
Vedi che molti algoritmi sono molto più semplici da definire ricorsivamente proprio per questo motivo, e sempre per questo i linguaggi funzionali sono più concisi e comprensibili.
Una lista infinita di tutti i numeri primi in Haskell si definisce con una decina di righe, forse meno, prova a farla in C ^^
Fra l'altro un'algoritmo complesso rischia di andare più veloce in Haskell che non in c, ovviamente il c va più veloce se ottimizzato, ma voglio vedere le ore che perdi a ottimizzarlo, oltre al fatto che ci metti di sicuro più del doppio del tempo a scriverlo.