prog02
Home ] Up ]

 

//Date:   2003.08.29
//File:   prog02.cpp
//Author: AOU

#include <iostream.h>
#include <stdlib.h>

//sum of digits function
//5=>1+2+3+4+5
//3=>1+2+3
/*
set sum to 0
for i=1 to n do the following
  add i to sum
  end for loop

return sum

*/

int sumOfDigits1(int n);
int sumOfDigits2(int n);
int sumOfDigits3(int n);

int fact1(int n);
int fact2(int n);


void testSumOfDigits(void);
void testFact1(void);


void main(void)
  {
  //testSumOfDigits();
  testFact1();
  }

void testFact1(void)
  {
  cout << "=========\n";
  cout << "testFact1\n";
  cout << "=========\n";
  int result;
  for (int i=1; i<=10; i++)
    {
    int n=rand()%10;
    cout << "n = " << n << endl;

    result = fact1(n);
    cout << result << endl;

    result = fact2(n);
    cout << result << endl;
    }
  }

int fact1(int n)
  {
  if (n < 0) 
    return -911;

  int product = 1;

  for (int i=1; i<=n; i++)
    product = product * i;

  return product;
  }

int fact2(int n)
  {
  if (n < 0) 
    return -911;

  if (0 == n)
      return 1;
    else
      return n * fact2(n-1);
  }


void testSumOfDigits(void)
  {
  cout << "===============\n";
  cout << "testSumOfDigits\n";
  cout << "===============\n";
  int result;
  for (int i=1; i<=10; i++)
    {
    int n=rand()%10;
    cout << "n = " << n << endl;

    result = sumOfDigits1(n);
    cout << result << endl;
  
    result = sumOfDigits2(n);
    cout << result << endl;

    result = sumOfDigits3(n);
    cout << result << endl;
    }
  }


int sumOfDigits1(int n)
  {
  if (n <= 0) 
    return -911;

  int sum = 0;

  for (int i=1; i<=n; i++)
    sum = sum + i;

  return sum;
  }


int sumOfDigits2(int n)
  {
  if (n <= 0) 
    return -911;

  return n*(n+1)/2;
  }


int sumOfDigits3(int n)
  {
  if (n <= 0) 
    return -911;

  if (1 == n)
      return n;
    else
      return n+sumOfDigits3(n-1);
  }