ulong factorial (ulong n) 
{
  ulong -w result = 0;

  if (n == 0 || n == 1) 
  {
    result = 1;
  } 
  else 
  {
    result = n * factorial (n - 1);
  }

  return result;
}