PDA

View Full Version : C: ricorsione


lucas87
19-11-2006, 13:59
Ho fatto un programma in C che mi inverte un numero:

esempio 123==321;


#include<stdio.h>

int inverti_numero(int);

int main(void)
{
int mp,cifra,m;
scanf("%d",&m);
inverti_numero(m);

printf("%d\n",inverti_numero(m));
while(getchar() != '\n');
printf("Premere INVIO per continuare...");
getchar();
}

int inverti_numero(int numero)
{
int mp,cifra;
mp=0;
cifra=0;
while(numero!=0)
{ cifra=numero%10;
mp=mp*10+cifra;
numero=numero/10;
}
return mp;
}


FUNZIONA.
Ora facendolo con ricorsione non ci riesco, sono arrivato a farlo così, ma invece di invertire il numero lo riscrive uguale. Capisco perchè me lo scrive uguale, ma non riesco a capire come farlo scrivere al rovescio.

#include<stdio.h>

int inverti_numero(int);

int main(void)
{
int m;
scanf("%d",&m);


printf("%d\n",inverti_numero(m));
while(getchar() != '\n');
printf("Premere INVIO per continuare...");
getchar();
}

int inverti_numero(int numero)
{
int cifra;
int mp;
cifra=0;
if(numero>=10){
cifra=numero%10;
mp=cifra*10+inverti_numero(numero/10);


return mp;
}
else return numero;

}



Chi mi da una mano

giannola
19-11-2006, 17:53
manca una condizione di iterazione (come un while o un for)

Volutomitra
19-11-2006, 18:00
if (numero>=10) ecc...

e se numero < 10 cosa ritorna?

mad_hhatter
19-11-2006, 18:01
int inverso(int result, int n){
result = result*10 + n%10;
n = n/10;
if (n == 0) return result;
else return inverso(result,n);
}

la prima chiamata sarà: inverso(0,n);

lucas87
19-11-2006, 18:08
GRAZIE RAGA ORA VA

mad_hhatter
19-11-2006, 18:22
prima di postarti il codice l'avevo provato :D