PDA

View Full Version : [C], aiuto funzioni ricorsive


D4rkAng3l
10-03-2005, 17:06
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

tglman
10-03-2005, 22:07
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!!

tglman
10-03-2005, 22:14
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..