In: Computer Science
write a recursive algorithm to find the maximum element in an array of n elements and analyze its time efficiency.
(I am using c++ programming language)
#include <iostream>
using namespace std;
// Function to find maximum element in an array of n elements
// i is the current index
// size is the length of array
// arr is the array name
// max is the function name
int max(int arr[], int i, int size){
// if the i+1 == size is true that means i is the last index of the array
if(i+1 == size){
// Then returning element at index i
return arr[i];
}
else{
// Calculating max for the remaining array starts from index i+1
int m = max(arr, i+1, size);
// If the max of remaining array is larger than arr[i]
// Then returning m as the max of the array
if(m > arr[i]){
return m;
}
// If the max of remaining array is not larger than arr[i]
// Then returning arr[i] as the max of the array
else{
return arr[i];
}
}
}
int main() {
//Testing
int arr[] = {4,2,5,1,3,-1};
int i = 0, size = 6;
// Making function call to max and printing the returned value to console
cout<<"Max = "<<max(arr, i, size)<<endl;
return 0;
}

Base case:
T(1) = 1
Recursive case:
T(n) = T(n-1) + 1
Solving recursive formula:
T(n) = T(n-1) + 1
= T(n-2) + 1 + 1
= T(n-3) + 1 + 1 + 1
....
....
= T(n-(n-1)) + 1 + ... + 1 + 1 + 1
= T(1) + 1 + ... + 1 + 1 + 1
= 1 + 1 + ... + 1 + 1 + 1
= n
= O(n)