Posted By

gil0mendes on 07/13/12

Add 1 to a natural x.

/ Published in: C++

Code used to test the differences between "sum up a natural x 1", with or without recursion.

`/*  * 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;}`