|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2009
Città: Lecce
Messaggi: 1356
|
Funzione matematica 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) ed ecco il codice che ho scritto: float divisione (float x) { if (x==0) return 0; else return x^2/divisione((x+1)/x); } sono quasi sicuro che vi siano degli errori visto che non compila
__________________
Oggetti attualmente in vendita:HD7950 + Phenom II 1090T /// HAF 922 /// XFX R9 280X 230€ |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2006
Città: MILANO
Messaggi: 1645
|
anche se compilasse direi che comunque non puo' funzionare scritta cosi'!
f(x) = 0 non e' possibile. Ti darebbe divisione per zero. Inoltre direi che non arriverai mai a chiamare f(0). Se questo accade o x = -1 o sei andato in overflow o casini simili
__________________
xoooxoooxooox |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: May 2001
Messaggi: 12822
|
Quote:
L'operatore "^" è l'operatore bitwise per fare un OR esclusivo tra bit (XOR). |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2009
Città: Lecce
Messaggi: 1356
|
ok quindi:
float divisione (float x) { if (x>0) return 0; else return pow(x,2)/divisione((x+1)/x); } dovrebbe essere così giusto? Per l'overflow lo credo anch'io, solo che la traccia presenta questa funzione, quindi mi chiedo se sintatticamente la funzione sia corretta
__________________
Oggetti attualmente in vendita:HD7950 + Phenom II 1090T /// HAF 922 /// XFX R9 280X 230€ |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Comunque deve prima definire, per convenzione, quanto valga f per x = 0.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 3826
|
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Il problema è formale: la formula che ha esposto all'inizio non contiene nessuna indicazione nel caso in cui x sia uguale a 0.
Lo fa nella sua implementazione, che non necessariamente rispetta la suddetta formula: quella di restituire 0 quando x vale 0 è soltanto una sua, personalissima, decisione. Restituire 1, ad esempio, potrebbe essere ugualmente corretto. Per questo parlavo di convenzione prima. P.S. Se la formula arrivasse da un compito, il docente avrebbe dovuto specificare anche questo caso.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 3826
|
Quote:
Forse farebbe prima a farci leggere il testo dell'esercizio, qualora si trattasse di ciò. |
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 3826
|
Quote:
Cioè, qual è la "condizione di uscita" di questa funzione ricorsiva? ![]() |
|
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 3826
|
Quote:
Comunque, avere ulteriori dettagli sarebbe meglio. Ah, il dominio è (-inf ; 0] ![]() |
|
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
La problematica, però, rimane interessante: considerato il range limitato dei float e gli errori di approssimazione nei calcoli, chissà quali risultati verrebbero prodotti per qualunque insieme di 2^32 (meno alcuni valori speciali dello standard IEEE) valori utilizzabili come input di questa funzione.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:31.