Page 581 - Informatica dalla A a Z
P. 581
int n;
printf(“Calcolo del fattoriale - Digita un numero naturale: ”);
scanf(“%d”, &n);
printf(“Il fattoriale del numero %d e’: %ld\n”, n, fattoriale(n));
}
long fattoriale(long x)
{
if (x==0)
return 1;
else
return x*fattoriale(x-1);
}
L’unica cosa a cui prestare attenzione quando si creano delle procedure di ricorsione, è
che non vadano in “loop”, cioè si crei un ciclo infinito, da cui non si può uscire, o che non
esaurisca completamente le risorse del sistema.
Esempio2: Fibonacci.
#include <stdio.h>
long fibonacci( long );
int main()
{
long result, number;
printf( "Inserisci un intero: " );
scanf( "%ld", &number );
result = fibonacci( number );
printf( "Fibonacci( %ld ) = %ld\n", number, result );
return 0;
}
/* Recursive definition of function fibonacci */
long fibonacci( long n )
{
if ( n == 0 || n == 1 )
return n;
else
return fibonacci( n - 1 ) + fibonacci( n - 2 );
}
577