1 /* Recursion and TailRecursion Cee example 
   2  */
   3 
   4 #include <stdio.h>
   5 // Recursion
   6 int fact(int n) {
   7     if(n < 0)
   8         return 0;
   9     else if(n == 0)
  10         return 1;
  11     else if(n == 1)
  12         return 1;
  13     else
  14         return n * fact(n-1);
  15 }
  16 
  17 // TailRecursion
  18 int facttail(int n, int a) {
  19     if(n < 0)
  20         return 0;
  21     else if(n == 0)
  22         return 1;
  23     else if(n == 1)
  24         return a;
  25     else
  26         return facttail(n-1, n*a);
  27 }
  28 
  29 int main(void) {
  30     int input=10;
  31     printf("\n%d factorial is %d\n", input, fact(input));
  32     printf("\n%d tail factorial is %d\n", input, facttail(input,1));
  33     return 0;
  34 }
web biohackers.net