×

C Programs

C Basic & Conditional Programs

C Looping Programs

C String Programs

C Miscellaneous Programs

C Program to Find Largest Element in an Array using Recursion

Here, we are going to implement a C Program to Find Largest Element in an Array using Recursion.
Submitted by Radib Kar, on December 13, 2018

Problem statement

Write a C Program to find the Biggest Number in an Array of integers (can be negative too) using Recursion.

Algorithm

1. Construct a max function which will return maximum of two.
    Function max(a, b)
        return a>b? a: b; //using ternary operator
    End Function

2. Construct recursive functionfindBigRec (array, end index)
    Function findBigRec (array, end index)
    a.  Base case:
        IF end index==0
            return INT_MIN;

    b.  Return maximum between the last element (array [end index-1]) & 
        maximum of rest of the array. Maximum of rest of the array 
        is calculated recursively.
        return max (array[end index-1], findBigRec (array, end index-1));

Explanation with example

Let the length of input array: 6
Array elements: 4 12 5 13 7 9
In the main function:

Call findBigRec (array,6);
---------------------------------------------------
findBigRec (array,6):
end index, 6 != 0
return max( array[5], findBigRec (array,5));

Call findBigRec (array,5);
---------------------------------------------------
findBigRec (array,5):
end index, 5 != 0
return max( array[4], findBigRec (array,4));

Call findBigRec (array,4);
---------------------------------------------------
findBigRec (array,4):
end index, 4 != 0
return max( array[3], findBigRec (array,3));

Call findBigRec (array,3);
---------------------------------------------------
findBigRec (array,3):
end index, 3 != 0
return max( array[2], findBigRec (array,2));

Call findBigRec (array,2);
---------------------------------------------------
findBigRec (array,2):
end index, 2 != 0
return max( array[1], findBigRec (array,1));

Call findBigRec (array,1);
---------------------------------------------------
findBigRec (array,1):
end index, 1 != 0
return max( array[0], findBigRec (array,0));

Call findBigRec (array,0);
---------------------------------------------------
findBigRec (array,0):
end index, 0 == 0
return INT_MIN;
---------------------------------------------------

findBigRec (array,1) returns max ( array[0], findBigRec (array,0))
    =max (4, INT_MIN)
    =4
---------------------------------------------------
findBigRec (array,2) returns max ( array[1], findBigRec (array,1))
    =max (12, 4)
    =12
---------------------------------------------------
findBigRec (array,3) returns max ( array[2], findBigRec (array,2))
    =max (5, 12)
    =12
---------------------------------------------------
findBigRec (array,4) returns max ( array[3], findBigRec (array,3))
    =max (13, 12)
    =13
---------------------------------------------------
findBigRec (array,5) returns max ( array[4], findBigRec (array,4))
    =max (7, 13)
    =13
---------------------------------------------------
findBigRec (array,6) returns max ( array[5], findBigRec (array,5))
    =max (9, 13)
    =13

Thus max returned by main function is 13
Biggest no in the array is 13

C Program to Find Largest Element in an Array using Recursion

#include <limits.h>
#include <stdio.h>
#include <stdlib.h>

// finding maximum of two element
int max(int a, int b) { return (a > b) ? a : b; }

int findBigRec(int* a, int n) {
  // base case
  if (n == 0)
    // can't return 0, since there may be
    // negative numbers in the array
    return INT_MIN;
  // recursively process
  // return maximum between the last element
  //& maximum of rest of array
  // maximum of rest of array is again going
  // to be recursively processed
  return max(a[n - 1], findBigRec(a, n - 1));
}

int main() {
  int n;

  printf("Enter array length: ");
  scanf("%d", &n);

  int* a = (int*)(malloc(sizeof(int) * n));
  printf("enter elements...\n");
  // input array elements
  for (int i = 0; i < n; i++) scanf("%d", &a[i]);

  // recursive function to find the maximum of the array
  int big = findBigRec(a, n);

  printf("The biggest element in the array is: %d\n", big);

  return 0;
}

Output

Enter array length: 6
enter elements...
4 12 5 13 7 9
The biggest element in the array is: 13 

C One-Dimensional Array Programs »

Related Programs

Comments and Discussions!

Load comments ↻





Copyright © 2024 www.includehelp.com. All rights reserved.