Recursion

Recursion leap of faith


Recursive version may slower because added function calls. Comparison of iterative and recursive version:
unsigned long Factorial(unsigned int n)
{
  unsigned long result = 1;
  for (unsigned int i=2; i<=n; i++)
    result *= i;
  return result;
}
// or
unsigned long Factorial(unsigned int n)
{
  if (n<2)	// base case
    return 1;
  else
    return (Factorial(n-1) * n);
}

double Power(int base, int exp)
{
  double result = 1.0;
  if (base==0)
  {
    printf("Error: power of 0 is undefined.");
    result = 0;
  }
  else
  {
    unsigned int absExp = abs(exp);
    for (unsigned int i=0; i<absExp; i++)
      result *= base;
    if (exp<0)
      result = 1.0 / result;
  }
  return result;
}
// or
double Power(int base, int exp)
{
  if (base==0)
  {
    printf("Error: power of 0 is undefined.");
    return 0;
  }
  else (exp==0)
    return 1.0;
  elseif (exp<0)
    return (Power(base, exp+1) / base);
  else
    return (Power(base, exp-1) * base);
}
Index