
Problem :
Find Second Largest Element in an Array – Using Recursion
int findMax(int arr[], int n, int index) {
if(index == n - 1)
return arr[index];
int maxRest = findMax(arr, n, index + 1);
return (arr[index] > maxRest) ? arr[index] : maxRest;
}int findSecondMax(int arr[], int n, int index, int max) {
if(index == n)
return -2147483648; // INT_MIN
int temp = findSecondMax(arr, n, index + 1, max);
if(arr[index] != max && arr[index] > temp)
return arr[index];
else
return temp;
}scanf("%d", &n);for(i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}maximum = findMax(arr, n, 0);<br>secondMax = findSecondMax(arr, n, 0, maximum);<br>#include <stdio.h>
#include <limits.h> // For INT_MIN
// Function to find maximum element using recursion
int findMax(int arr[], int n, int index) {
if(index == n - 1)
return arr[index];
int maxRest = findMax(arr, n, index + 1);
return (arr[index] > maxRest) ? arr[index] : maxRest;
}
// Function to find second largest element using recursion
int findSecondMax(int arr[], int n, int index, int max) {
if(index == n)
return INT_MIN; // Smallest integer
int temp = findSecondMax(arr, n, index + 1, max);
if(arr[index] != max && arr[index] > temp)
return arr[index];
else
return temp;
}
int main() {
int n, i, maximum, secondMax;
printf("Enter the number of elements: ");
scanf("%d", &n);
int arr[n];
printf("Enter the elements:\n");
for(i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
maximum = findMax(arr, n, 0);
secondMax = findSecondMax(arr, n, 0, maximum);
if(secondMax == INT_MIN)
printf("\nNo second largest element exists.\n");
else
printf("\nSecond largest element in the array: %d\n", secondMax);
return 0;
}
Enter the number of elements: 5
Enter the elements:
10 25 7 30 15
Second largest element in the array: 25
Enter the number of elements: 4
Enter the elements:5 5 5 5
No second largest element exists.