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;
}

