Ricordare che la ricorsione non prevede cicli per stabilire il punto d'uscita, ma solo if.
Nella tua funzione hai inserito un ciclo while di troppo che interferisce col meccanismo di ricorsione.
Non l'ho testata, ma dovrebbe essere giusta. Quando headR varrà NULL hai raggiunto la condizione di uscita, ricerca esce e stampa il valore corrispondente.codice:void ricerca ( listPtr headR ) { if (headR == NULL) return; ricerca ( headR->next); fprintf (stdout , "%s\n" , headR->value ) ; }
Se headR non è NULL, la funzione esegue le prime due linee di codice e richiama se stessa fino al raggiungimento della condizione.

Rispondi quotando