int main() { { std::chrono::time_point<std::chrono::system_clock> start, end; start = std::chrono::system_clock::now(); std::cout << "sum_recursive(100) = " << sum_recursive(100) << '\n'; end = std::chrono::system_clock::now(); std::chrono::duration<double> elapsed_seconds = end-start; std::time_t end_time = std::chrono::system_clock::to_time_t(end); std::cout << "finished computation at " << std::ctime(&end_time) << "elapsed time: " << elapsed_seconds.count() << "s\n"; } { std::chrono::time_point<std::chrono::system_clock> start, end; start = std::chrono::system_clock::now(); std::cout << "sum_loop(100) = " << sum_loop(100) << '\n'; end = std::chrono::system_clock::now(); std::chrono::duration<double> elapsed_seconds = end-start; std::time_t end_time = std::chrono::system_clock::to_time_t(end); std::cout << "finished computation at " << std::ctime(&end_time) << "elapsed time: " << elapsed_seconds.count() << "s\n"; } }
int sum_recursive(int num, int counter) { if (counter == num) { return num; } else { return counter + sum_recursive(num, counter+1); } }
int sum_recursive(struct listNode* x) //@ rule <k> $ => return sum(A); ...</k> <heap>... list(x)(A) ...</heap> { if (x == NULL) return 0; return x->val + sum_recursive(x->next); }
int main(int argc, char *argv[]) { if (argc != 2) { fprintf(stderr, "Usage: %s number\n", argv[0]); return EXIT_FAILURE; } int sum = sum_recursive(atoi(argv[1]), 0); printf("Recursive sum = %d\n", sum); return EXIT_SUCCESS; }
int main() { { std::chrono::time_point<std::chrono::system_clock> start, end; start = std::chrono::system_clock::now(); std::cout << "sum_recursive(100) = " << sum_recursive(100) << '\n'; end = std::chrono::system_clock::now(); std::chrono::duration<double> elapsed_seconds = end-start; std::cout << "sum_recursive elapsed time: " << elapsed_seconds.count() << "s\n"; } { std::chrono::time_point<std::chrono::system_clock> start, end; start = std::chrono::system_clock::now(); std::cout << "sum_loop(100) = " << sum_loop(100) << '\n'; end = std::chrono::system_clock::now(); std::chrono::duration<double> elapsed_seconds = end-start; std::cout << "sum_loop elapsed time: " << elapsed_seconds.count() << "s\n"; } }
long sum_recursive(unsigned n) { if (n == 1) return n; return sum_recursive(n-1) + n; }