Salve a tutti, mi sto avvicinando al mondo del C e vorrei porre a voi esperti un piccolo problema.
Ho scritto un programmino che richiede un numero da tastiera e ne calcola il fattoriale prima attraverso il metodo di iterazione e successivamente attraverso la ricorsione.
Il programma funziona abbastanza bene, l'unico fatto curioso è che superato un certo numero i valori calcolati tra iterazione e ricorsione differiscono da una certa cifra in poi.
Vorrei capire a cosa è dovuto, allego sotto esempio errore e codice sorgente. Grazie a tutti
Esempio da terminale:
**** Calcolo Fattoriale ****
Inserisci il numero del quale calcolare il fattoriale: 56
Iterativo -> Il Fattoriale di 56 è:
710998587804863451797683179691464326875337907723689145398690766266220675072
Ricorsivo -> Il Fattoriale di 56 è:
710998587804863451748643322383755883407870802854879251522891114356345405440
Tutto Fatto!!!
#include <stdio.h>
long double fattorialeIterativo(int);
long double fattorialeRicorsivo(int);
main()
{
int dim;
system("clear");
printf("**** Calcolo Fattoriale ****\n\n");
printf("Inserisci il numero del quale calcolare il fattoriale: ");
scanf("%d", &dim);
printf("\nIterativo -> Il Fattoriale di %d è: %.0Lf", dim, fattorialeIterativo(dim));
printf("\nRicorsivo -> Il Fattoriale di %d è: %.0Lf", dim, fattorialeRicorsivo(dim));
printf("\n\nTutto Fatto!!!\n\n\n");
return 0;
}
long double fattorialeIterativo(int dim){
long double fatt = 1;
int i;
if(dim != 0)
for(i=dim; i>0; i--)
fatt *= i;
return fatt;
}
long double fattorialeRicorsivo(int dim){
long double fatt = 1;
if(dim == 0)
return fatt;
else
fatt *= dim;
return fatt * fattorialeRicorsivo(dim-1);
}
Se provate a compilare noterete che con valori bassi sino a 30 credo l'algoritmo funziona alla grande, poi comincia a sballare. Grazie ancora