Io non rientro certamente in questa categoria quindi ti consiglio di aspettare eventuali risposte (e/o rettifiche) da chi, invece, ne fa parte.Originariamente inviato da Sandro_88
voi utenti esperti
In ogni caso, per quello che so non esiste una regola precisa che stabilisca quando usare la ricorsione e quando il metodo iterativo. In generale quello che si può fare usando una delle due tecniche di programmazione può essere realizzato (in maniera più o meno facile/efficiente) con l'altra.
Di solito la tecnica ricorsiva grava maggiormente sulle prestazioni di un programma, questo perché si tratta di realizzare un certo numero di chiamate a funzioni fin quando non si raggiunge un caso base. Il metodo iterativo fornisce generalmente prestazioni migliori, ma molto spesso risulta più complesso implementare, con questa tecnica, algoritmi che, per la natura del problema che risolvono, verrebbero descritti in maniera molto più concisa, chiara ed elegante ricorsivamente; è il caso, ad esempio, delle visite inorder, preorder e postorder degli alberi binari: possono essere realizzati sia con l'una che con l'altra tecnica ma risultano più difficili da implementare iterativamente, poiché bisogna gestire uno stack esplicitamente (mentre la programmazione ricorsiva lo fa implicitamente).
Insomma sul piatto della bilancia bisogna mettere da un lato le esigenze relative alle prestazioni e dall'altro la chiarezza, l'eleganza e la concisione dell'algoritmo che bisogna realizzare. Regole universali non esistono.
(comunque direi che la questione riguarda la programmazione in generale e non solo il linguaggio C, come indicato nell'oggetto del topic).

Rispondi quotando