19/09/11 9:52
Soulcyber
Ciao ragazzi, sono qui per chiedere il vostro aiuto, volevo sapere se qualcuno era in grado di spiegarmi come funzionano le funzioni ricorsive, preavviso subito che ho letto tutto quello che ho trovato cercando normalmente su internet, tipo esempi sul fattoriale, fibonacci ecc ecc, ma non ho trovato nulla di complesso che mi aiutasse a capire come funziona quando il codice è più complicato..
Ho una lista L1->8-5-2-7-4->NULL e una lista L2->NULL (vuota)
ad un certo punto del main mi viene chiamata la funzione:
e la funzione elabora è la seguente:
ecco posso dirvi che la soluzione è questa
L1->8-2-3->NULL
L2->5-7->NULL
ma non riesco a capire i passaggi che fa, proprio il meccanismo con cui crea le istanze della funzione e come le risolve al contrario partendo dall'ultima
Se qualcuno ha un po' di tempo da perdere nello spiegarmelo ve ne sarei grato^^
Grazie comunque, ciao a tutti
truct Cella { int valore; struct Cella *next; } typedef struct Cella *Lista;
Ho una lista L1->8-5-2-7-4->NULL e una lista L2->NULL (vuota)
ad un certo punto del main mi viene chiamata la funzione:
L2 = elabora(L1,0,L1);
e la funzione elabora è la seguente:
Lista elabora (Lista LL, int f, Lista tt) { Lista aux; If (LL == NULL) return NULL; If (f) { aux = elabora(LL->next,(f+1)%2,tt); LL->next = aux; return LL; } else { aux = elabora(LL->next,(f+1)%2,LL); if (tt != LL) tt->next = LL; return aux; } }
ecco posso dirvi che la soluzione è questa
L1->8-2-3->NULL
L2->5-7->NULL
ma non riesco a capire i passaggi che fa, proprio il meccanismo con cui crea le istanze della funzione e come le risolve al contrario partendo dall'ultima
Se qualcuno ha un po' di tempo da perdere nello spiegarmelo ve ne sarei grato^^
Grazie comunque, ciao a tutti
aaa