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