diff options
Create sum_rec.cpp
1 files changed, 31 insertions, 0 deletions
| -rw-r--r-- | Sem. 13/sum_rec.cpp | 31 |
diff --git a/Sem. 13/sum_rec.cpp b/Sem. 13/sum_rec.cpp new file mode 100644 index 0000000..a1084cc --- /dev/null +++ b/Sem. 13/sum_rec.cpp @@ -0,0 +1,31 @@ +#include <iostream> + + +int sum(const int* arr, size_t size) +{ + if (size == 0) + return 0; + return *arr + sum(arr + 1, size - 1); +} + +int sum_tail_rec(const int* arr, size_t size, int sum) +{ + if (size == 0) + return sum; + + return sum_tail_rec(arr + 1, size - 1, sum + *arr); +} + +int sum_tail_wrapper(const int* arr, size_t size) +{ + return sum_tail_rec(arr, size, 0); +} + + +int main() +{ + const size_t SIZE = 4; + int arr[SIZE] = { 1, 2, 3, 4 }; + + std::cout << sum_tail_wrapper(arr, SIZE); +} |
