In C supporta la ricorsione.
Comunque, in generale, e' meglio usare certi strumenti la dove hanno piu' senso.
E' come la questione del cacciavite, del martello, della vite e del chiodo:
puoi sempre usare la martello con la vite e il cacciavite con il chiodo MA se li usi nel modo giusto, la vita e' molto piu' semplice.
In questo caso, meglio un ciclo, che una chiamata ricorsiva.
Se vuoi implementare una funzione ricorsiva, allora lo puoi fare, ad esempio, nel seguente modo:
SUPPONI di avere SOLO il numero 0 (zero) e SOLO la funzione "successivo(i)".
Ovviamente
1 = successivo(0)
2 = successivo(1) = successivo(successivo(0))
ora prova a implementare la funzione "somma(x,y)", nel seguente modo:
somma(x,y) :=
if x==0 && y==0 then return 0
if x>0 then return successivo(somma(x-1,y))
if y>0 then return successivo(somma(x,y-1))
E' un po' ""strano"" MA funziona
E la funzione "somma" e' splendidamente ricorsiva