Page 17, Exercise 7
#include <stdio.h>
double iterFact(int);
double recurFact(int);
int main(){
int n;
printf("n:(>=0): ");
scanf("%d", &n);
while (n < 0)
{ /*error loop */
printf("n:(>=0): ");
scanf("%d", &n);
}
printf("%d factorial is %f.\n", n, iterFact(n));
printf("%d factorial is %f.\n", n, recurFact(n));
}
double recurFact(int n)
{ /*recursive version */
if ((n==0) || (n==1)) return 1.0;
return n*recurFact(n-1);
}
double iterFact(int n)
{/* find the factorial, return as a double
to keep it from overflowing */
int i;
double answer;
if ((n == 0) || (n == 1)) return 1.0;
answer = 1.0;
for (i = n; i > 1; i--)
answer *= i;
return answer;
}
|