Code implement factorial function to compute a factorial usi
Code (implement) \"factorial\" function (to compute a factorial), using (1) recursion, (2) tail-recurtion, and (3) iteration (loop). (Note: factorial(N) - that is, N! is defined as: 0! = 1, 1!=1, N! = N x ( (N-1)! )
Solution
1) program using recursion :
/*
 * C Program to find factorial of a given number using recursion
 */
 #include <stdio.h>
 
 int fact(int);
 
 int main()
 {
 int num;
 int result;
 
 printf(\"Enter a number to find it\'s Factorial: \");
 scanf(\"%d\", &num);
 if (n < 0)
 {
 printf(\"Factorial of given number not possible\ \");
 }
 else
 {
 result = fact(n);
 printf(\"The Factorial of %d is %d.\ \", n, result);
 }
 return 0;
 }
 int fact(int num)
 {
 if (num == 0 || num == 1)
 {
 return 1;
 }
 else
 {
 return(num * fact(num - 1));
 }
 }
2) program using tail-recursion :
/*
 * C Program to find factorial of a given number using tail-recursion
 */
 #include <stdio.h>
 
 int factorial(int);
 int fac_times(int, int);
 
 int main()
 {
 int num;
 int result;
 
 printf(\"Enter a number to find it\'s Factorial: \");
 scanf(\"%d\", &num);
 if (n < 0)
 {
 printf(\"Factorial of given number not possible\ \");
 }
 else
 {
 result = factorial(n);
 printf(\"The Factorial of %d is %d.\ \", n, result);
 }
 return 0;
 }
 int fac_times (int n, int acc) {
 if (n == 0) return acc;
 else return fac_times(n - 1, acc * n);
 }
int factorial (int n) {
 return fac_times (n, 1);
 }
3. progarm using Iteration loop :
 #include <stdio.h>
 int main()
 {
 int n, i;
 int fact = 1;
printf(\"Enter an integer: \");
 scanf(\"%d\",&n);
// show error if the user enters a negative integer
 if (n < 0)
 printf(\"Error! Factorial of a negative number doesn\'t exist.\");
else
 {
 for(i=1; i<=n; ++i)
 {
 fact *= i; // fact = fact*i;
 }
 printf(\"Factorial of %d = %llu\", n, fact);
 }
return 0;
 }


