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