|
|
|
![]() |
|
Strumenti |
![]() |
#21 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Non solo... Così dovrebbe andare...
Codice:
double cap_finale(double iniziale,int anni) { if (anni <= 0); return iniziale; iniziale = iniziale + iniziale * 0.035 * 0.875; printf("\n%f", iniziale); return cap_finale(iniziale, anni-1); //nota il -1 } |
![]() |
![]() |
![]() |
#22 |
Senior Member
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
|
teoricamente è giusto,xche quando arriva all'anno 0 lui si è già calcolato l'ultimo capitale iniziale,xò mi da risultato zero..
la stampo così la funzione..sbaglio a chiamarla? Codice:
printf("%f",cap_finale(iniziale,n));
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13" Concluso affari con: bottoni,skino,semmy83,alex_ |
![]() |
![]() |
![]() |
#23 |
Senior Member
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
|
Mea culpa, non avevo chiesto il paramatro da passare e lui passava zero..
![]()
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13" Concluso affari con: bottoni,skino,semmy83,alex_ |
![]() |
![]() |
![]() |
#24 | |
Senior Member
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
|
Quote:
quel meno 1 l'ho capito,ma come mai quel + 1 alla prima funzione?
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13" Concluso affari con: bottoni,skino,semmy83,alex_ |
|
![]() |
![]() |
![]() |
#25 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Per il ; scusa...avevo fatto le modifiche partendo dal tuo codice e così non me ne sono accorto...
Il + 1 alla fine della prima funzione serve per contare le ricorsioni fatte... Fai conto di essere alla N-esima chiamata... Se alla successiva chiamata la funzione ritorna 0 (abbiamo superato la soglia)...si ritorna alla N-esima chiamata che ritorna 1+0... La N-1 ritorna 1+1+0... La prima chiamata ritorna N al programma principale...con N il numero di chaimate (in realtà il numero di chiamate è N+1, ma l'ultima ritorna 0)... A chi si trova male con le ricorsione io suggerisco sempre di lavorare in modo similare alle dimostrazioni per induzione... La prima cosa da fare è settare la/le condizioni di arresto...cioè le condizioni per cui la ricorsione si deve fermare... Poi settare i valori da ritornare nel caso siano raggiunte le condizioni di arresto...cioè i valori da ritornare in caso che i valori passati alla funzione siano tali da non permettere alcuna ricorsione... Poi si passa alla ricorsione...e bisogna metterci nel caso più generico possibile (senza fare alcuna supposizione sui valori di ingresso)... L'unica cosa che sappiamo è che non sono tali da verificare una condizione di arresto... A questo punto bisogna ragionare su quello che il nostro algoritmo deve fare al generico passo i... Se si ragiona in questo modo l'algoritmo ricorsivo funziona quasi automaticamente... |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:03.