/*
* program to compute a factorial
* invocation:
* fact run it
* exit code: 0 always
* author: Matt Bishop, bishop@cs.ucdavis.edu, 9/16/96
*/
#include <stdio.h>
#include <stdlib.h>
/*
* compute a single-precision factorial
*/
int fact(int n)
{
if (n < 0) return(-1); /* sanity check */
if (n == 0) return(1); /* terminal case */
return(n * fact(n-1)); /* recurse */
}
/*
* the main program
*/
int main(void)
{
int n; /* number to compute factorial of */
register int nread; /* number of numbers read */
/*
* read numbers and compute their factorial
*/
while(printf("> "), (nread = scanf("%d", &n)) != EOF){
switch(nread){
case 0: /* bad input */
printf("Need a non-negative integer\n");
break;
case 1: /* good input */
printf("\t%d\n", fact(n));
break;
default: /* can't happen (uh huh ...) */
printf("HUH? nread = %d?!?!\n", nread);
break;
}
}
/*
* skip to a new line and quit
*/
putchar('\n');
return(EXIT_SUCCESS);
}
Send email to
cs40@csif.cs.ucdavis.edu.
Department of Computer Science
University of California at Davis
Davis, CA 95616-8562