Funzione Ricorsiva in C
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?
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
intanto if(x==0)
e poi non serve if (x>0>
e poi non serve if (x>0>
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?
float divisione (float x) {
if (x==0)
return 0;
else
return x^2/divisione((x+1)/x);
}
Cosa c'è da correggere?
non saprei... ma prova a chiamare ad es divisione(1)... siamo sicuri che termini l'esecuzione?
l'esecuzione non restituisce alcun risultato, anche se visto che richiama x+1 sono sicuro che vada in overflow
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.