Find Second Largest Element in an Array – Using Recursion

List Topics
September 1, 2025
No Comments
4 min read

Find Second Largest Element in an Array – Using Recursion

যা শিখবো:

  • কীভাবে recursion ব্যবহার করে array-এর largest এবং second largest element বের করা যায়
  • base case ও recursive call কিভাবে কাজ করে
  • array indexing এবং condition check-এর ব্যবহার

ধাপে ধাপে ব্যাখ্যা:

Step 1: Maximum element খুঁজে বের করার function

C
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;
}

Step 2: Second largest element খুঁজে বের করার function

C
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;
}

Step 3: ইউজার থেকে array size ইনপুট নেওয়া

C
scanf("%d", &n);

Step 4: ইউজার থেকে array elements ইনপুট নেওয়া

C
for(i = 0; i < n; i++) {
    scanf("%d", &arr[i]);
}

Step 5: Functions call করে second largest element বের করা

C
maximum = findMax(arr, n, 0);<br>secondMax = findSecondMax(arr, n, 0, maximum);<br>

উদাহরণ:

C
#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;
}

আউটপুট উদাহরণ:

উদাহরণ ১:

C
Enter the number of elements: 5
Enter the elements:
10 25 7 30 15

Second largest element in the array: 25

উদাহরণ ২:

C
Enter the number of elements: 4
Enter the elements:5 5 5 5
No second largest element exists.

ব্যাখ্যা:

  • findMax() → recursion ব্যবহার করে array-এর largest element বের করে
  • findSecondMax() → recursion ব্যবহার করে largest element ছাড়া অন্য largest element খুঁজে বের করে
  • Base Case → index শেষ হলে recursion থেমে যায়
  • Recursive Call → index বাড়িয়ে array-এর পরবর্তী element চেক করে
  • যদি array তে সব element সমান হয়, second largest element নেই, তাই INT_MIN check করা হয়

©2025 Linux Bangla | Developed & Maintaind by Linux Bangla.