diff options
Create max_rec.cpp
1 files changed, 39 insertions, 0 deletions
| -rw-r--r-- | Sem. 13/max_rec.cpp | 39 |
diff --git a/Sem. 13/max_rec.cpp b/Sem. 13/max_rec.cpp new file mode 100644 index 0000000..19c1b9e --- /dev/null +++ b/Sem. 13/max_rec.cpp @@ -0,0 +1,39 @@ +#include <iostream> + + +//рекурсивна функция, която намира най-големия елемент в масив + +int max(int a, int b) +{ + return a > b ? a : b; +} + +int getMaxRec(const int* arr, size_t size) +{ + if (size == 0) + return INT_MIN; + + return max(*arr, getMaxRec(arr + 1, size - 1)); +} + +int get_max_rec_tail(const int* arr, size_t size, int currentMax) +{ + if (size == 0) + return currentMax; + + return get_max_rec_tail(arr + 1, size - 1, max(currentMax, *arr)); +} + +int get_max_rec_wrapper(const int* arr, size_t size) +{ + return get_max_rec_tail(arr, size, INT_MIN); +} + + +int main() +{ + const size_t SIZE = 4; + int arr[SIZE] = { 1, 2, 3, 4 }; + + std::cout << get_max_rec_wrapper(arr, SIZE); +} |
