Funzione Ricorsiva in C

nasio911
Salve a tutti dovrei trasformare una funzione matematica in una funzione ricorsiva in C la funzione è la seguente:
f(x)= $ x^2/f((x+1)/x) $


allora nel codice ho scritto:

float divisione (float x) {
if (x=0)
return 0;
else
if (x>0)
return x^2/divisione((x+1)/x);
}


E' giusta?

Risposte
kobeilprofeta
intanto if(x==0)

e poi non serve if (x>0>

nasio911
vero hai ragione, dunque:

float divisione (float x) {
if (x==0)
return 0;
else

return x^2/divisione((x+1)/x);
}

Cosa c'è da correggere?

kobeilprofeta
non saprei... ma prova a chiamare ad es divisione(1)... siamo sicuri che termini l'esecuzione?

nasio911
l'esecuzione non restituisce alcun risultato, anche se visto che richiama x+1 sono sicuro che vada in overflow

vict85
Quella funzione ricorsiva non si fermerà mai perché x non tende a 0. In particolare quella funzione non dovrebbe essere rappresentata da una funzione ricorsiva.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.