PDA

Visualizza la versione completa : [C]delucidazione funzione ricorsiva


Sandro_88
25-01-2009, 19:43
salve a tutti...come da titolo chiedevo se era possibile avere una piccola delucidazione da voi utenti esperti sulle funzioni ricorsive...in pratica il meccanismo di attuazione l'ho assimilato abbastanza bene...ma mi chiedevo più che altro in che ambito debbano essere usate e come...grazie a tutti

YuYevon
25-01-2009, 21:09
Originariamente inviato da Sandro_88
voi utenti esperti

Io non rientro certamente in questa categoria quindi ti consiglio di aspettare eventuali risposte (e/o rettifiche) da chi, invece, ne fa parte.

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).

MItaly
25-01-2009, 22:14
C'è una vecchia discussione (http://forum.html.it/forum/showthread.php?threadid=1238253) piuttosto interessante in merito.

Sandro_88
26-01-2009, 12:49
ok grazie mille per le risposte ricevute...da quanto leggo anche su internet rimane un fatto di semplicità d'uso e praticità...questione di gusti insomma...il dubbio sull'utilità dei due sistemi di ricorsione e iterazione se lo pone anche il mio stesso libro nel quale sto studiando...alla prossima ciao

Loading