/* File: fattoria.c */
/* Time-stamp: "2001-03-26 02:44:58 calvanes" */
/* Scopo: primo esempio di funzione ricorsiva con valore di ritorno */

/* Funzione ricorsiva che calcola il fattoriale di un intero nonnegativo
   Si ricorda che il fattoriale n! e' definito come:

     n! = 1         se n = 0
     n! = n*(n-1)!  se n > 0
*/


#include <stdio.h>

long fattoriale(long n)
  /* Calcola il fattoriale di un intero nonnegativo.
     Si utilizza il tipo long in quanto il fattoriale cresce molto velocemente.
  */
{
  if (n < 0) return -1;   /* Fattoriale non e` definito per interi negativi! */

  if (n == 0)
    return 1;
  else
    return n * fattoriale(n-1);
}


int main(void)
{
  long n;

  printf("Inserire un intero >= 0: ");
  scanf("%ld", &n);
  printf("Il fattoriale di %ld e` %ld\n", n, fattoriale(n));
  return 0;
}