PDA

Visualizza la versione completa : [C] Radice digitale e ricorsività


Downloader
07-11-2007, 18:38
Ciao a tutti,

sto cercando di capire come mai il programmino che sto scrivendo per calcolare la radice digitale con una funzione ricorsiva non funga correttamente.



#include <stdio.h>
#include <stdlib.h>

int somma(int);

int main() {
int a;
scanf("%i",&a);
printf("%i\n",somma(a));
return 0;
}

int somma(int n) {

if (n < 10)
return n;
else
n = (n%10 + somma(n/10));


return n;
}



Mi date una mano??

Grazie

MacApp
07-11-2007, 19:23
Prova con:



/*
* Compiled and tested with:
* i686-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5367)
*
* input: 65536
* output: 7
*
*/

#include <stdio.h>
#include <stdlib.h>

int somma(int);

int main() {
int a;
scanf("%i",&a);
printf("%i\n",somma(a));
return 0;
}

int somma(int n) {
if (n < 10)
return n;
else
n = somma (n%10 + somma(n/10));
return n;
}

Downloader
07-11-2007, 19:29
Funziona, ma potresti dirmi in cosa sbaglio??

Per me la ricorsione è nuova, quindi faccio un po' fatica a capire bene come muovermi.

MacApp
07-11-2007, 19:56
non si vede?
Ho cambiato la tua


n = (n%10 + somma(n/10));

con


n = somma (n%10 + somma(n/10));

;-)

Downloader
07-11-2007, 20:04
No, si vede bene.

Solo che ancora non riesco bene capire qual'è stato il tuo ragionamento visto che non conosco affatto le ricorsioni.

MacApp
07-11-2007, 20:11
funziona anche così


n = somma (n%10 + n/10);

;-)

Downloader
08-11-2007, 18:28
Ho provato a fare dei piccoli esercizi con la ricorsione ad esempio facendo una funzione che calcola un numero elevato alla potenza n, e non ho avuto grosse difficoltà, ma con questo tuo esempio francamente non capisco.

Non riesco a immaginarmelo in testa, potresti spiegarmi come hai ragionato?


Grazie

Downloader
08-11-2007, 20:44
La radice digitale l'ho capita, adesso sto facendo un esercizio con i numeri di fibonacci, ma anche qua ho problemi.

Downloader
09-11-2007, 11:51
Ma voi come avete fatto a capire questa ricorsività?? Devo dire che sto incontrando parecchi problemi.

XWolverineX
10-11-2007, 18:03
ne stavamo parlando qui
http://forum.html.it/forum/showthread.php?s=&threadid=1180757&highlight=ricorsione

Loading