Allora, supponi di avere una struttura del genere
A questo punto la soluzione iterativa è immediatacodice:// definisco puntatore a struttura nodo typedef pnode *struct node // definisco struttura nodo struct node { int info; pnode next; }
La soluzione ricorsiva è immediatacodice:// Funzione iterativa per la ricerca del primo pari // Passo la testa della lista già caricata pnode trovaPrimoPari(pnode lista) { // dichiaro una lista temporanea per scorrere // la lista in input pnode i; // scorro la lista for(i=lista; i!=NULL; i=i->next) { // verifico che l'elemento trovato sia pari // ovvero se la divisione per 2 ha come resto 0 if(i->info%2==0) { // Ritorno il nodo che contiene tale numero return i; } } // Se arrivo qui non ho trovato il numero pari // quindi ritorno NULL return NULL; }
Capito???codice:// Funzione ricorsivaper la ricerca del primo pari // Passo l'iesimo nodo della lista già caricata // La prima volta passo la testa pnode trovaPrimoPariRic(pnode lista) { // Caso Base 1: lista vuota if(lista==NULL) { // Nono ho trovato il numero pari return NULL; } // Caso Base 2: trovo il primo numero pari if(lista->info%2==0) { // Ho trovato il numero pari // Ritorno il nodo che contiene il primo // numero pari return lista; } // Se arrivo qui eseguo ricorsione // sul resto della lista return trovaPrimoPariRic(lista->next); }

Rispondi quotando