|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
[C], aiuto funzioni ricorsive
Dovrei risolvre questo esercizio con una fnzione ricorsiva senza usare i vettori....
Scrivere una funzione che prenda un valore intero e lo restituisca dopo avere invertito le sue cifre...per esempio, dato il numero 7631 la funzione dovà restituire 1367 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
puoi utilizzare un algoritmo del tipo:
una funzione con protoripo: int fun(in num_elab,int num_cifre,int num_cifremax); che svolga un'operazione del tipo : int n=1,m=1: for(int i=0;i<num_cifre;i++)n*=10 for(int i=0;i<num_cifremax-num_cifre;i++)m*=10 return fun(num_elab%(n),num_cifre-1,num_cifremax)+num_elab/n*m; dove num_elab è il numero da elaborare num_cifre è il numero delle cifre che ha il numero da elaborare e num_cifremax e il numero mossimo delle cifre. alla prima chiamata della funzione logicamente num_cifre e num_cifremax corrispondono.. Non so se hai capito il meccanismo ma se vuoi te lo spiego... Ciao!! Ultima modifica di tglman : 10-03-2005 alle 23:19. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
Rileggendolo ho capito che è un po inconprensibile adesso lo spiego:
se abbiamo il numero 12345: la prima chiamata della funzione sarà fun(12345,5,5); e questa svolgera esattamente: fun(2345,4,5)+(12345)/10000*(1); quindi visto che la divisione se non uso i float è senza virgola avro 1*1; il risultato della seconda chiamata sarà: fun(345,3,5)+(2345)/1000*10; cioè 20: che sommato a i mi dara 21, e cosi via... Ciao.. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:17.



















