/ Published in: C++
                    
                                        
Code used to test the differences between "sum up a natural x 1", with or without recursion.
                
                            
                                Expand |
                                Embed | Plain Text
                            
                        
                        Copy this code and paste it in your HTML
/*
* Add 1 to a natural x - Test with and without recursion.
* Author: Gil Mendes (gil0mendes)
*
* Created on 11 de Julho de 2012, 18:34
*/
#include <cstdlib>
#include <iostream>
#include <time.h>
using namespace std;
/**
* Add 1 to a natural x.
*
* Function without recursion, very optimized.
* By Gil Mendes (gil0mendes)
*
* @param int64_t number - Natural number (x)
* @return int64_t - Result
*/
int64_t add1ToX(register int64_t number) {
register int64_t total = 0;
do {
total += number--;
} while (number != 0);
return total;
}
/**
* Add 1 to natural x (with recursion)
*
* By Luciana Sondermann
*
* @param int n - Natural number (x)
* @return int - Result
*/
int SomatRec(int n) {
int soma;
if (n == 1) {
soma = 1;
} else {
soma = n + SomatRec(n - 1);
}
return soma;
}
void printResults(int64_t number, int64_t result, clock_t start, clock_t end) {
cout << "The sum of 1 to " << number << " is: " << result << endl;
cout << "Elapsed time (in microseconds): " << (end - start) << endl;
return;
}
/*
* Entry point of the program, tests the time between with and without recursion.
*/
int main(int argc, char** argv) {
int64_t number = 0, result = 0;
clock_t start, end;
while (number <= 0) {
cout << "Enter a natural number: ";
cin >> number;
}
cout << endl << "Without recursion" << endl;
start = clock();
result = add1ToX(number);
end = clock();
printResults(number, result, start, end);
cout << endl << "With recursion" << endl;
start = clock();
result = SomatRec(number);
end = clock();
printResults(number, result, start, end);
return 0;
}
Comments
 Subscribe to comments
                    Subscribe to comments
                
                