|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Bannato
Iscritto dal: Oct 2006
Messaggi: 170
|
C: ricorsione
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 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2005
Città: Palermo
Messaggi: 2579
|
manca una condizione di iterazione (come un while o un for)
__________________
Utente gran figlio di Jobs ed in via di ubuntizzazione Lippi, perchè non hai convocato loro ? |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Feb 2006
Messaggi: 134
|
if (numero>=10) ecc...
e se numero < 10 cosa ritorna? |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
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); |
|
|
|
|
|
#5 |
|
Bannato
Iscritto dal: Oct 2006
Messaggi: 170
|
GRAZIE RAGA ORA VA
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
prima di postarti il codice l'avevo provato
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:00.


















