Recursive Programs to find Minimum and Maximum elements of array - GeeksforGeeks

23 Apr, 2021
Given an array of integers arr, the task is to find the minimum and maximum element of that array using recursion.
Examples : 
Input: arr = {1, 4, 3, -5, -4, 8, 6};
Output: min = -5, max = 8

Input: arr = {1, 4, 45, 6, 10, -8};
Output: min = -8, max = 45
Recursive approach to find the Minimum element in the array
Approach:  
Get the array for which the minimum is to be found
Recursively find the minimum according to the following: Recursively traverse the array from the endBase case: If the remaining array is of length 1, return the only present element i.e. arr[0] 
Recursively traverse the array from the end
Base case: If the remaining array is of length 1, return the only present element i.e. arr[0] 
if(n == 1)
   return arr[0];
Recursive call: If the base case is not met, then call the function by passing the array of one size less from the end, i.e. from arr[0] to arr[n-1].
Return statement: At each recursive call (except for the base case), return the minimum of the last element of the current array (i.e. arr[n-1]) and the element returned from the previous recursive call. 
return min(arr[n-1], recursive_function(arr, n-1));
Print the returned element from the recursive function as the minimum element
Pseudocode for Recursive function: 
If there is single element, return it.
Else return minimum of following.
    a) Last Element
    b) Value returned by recursive call
       fir n-1 elements.
Below is the implementation of the above approach:
C++
Java
Python3
C#
PHP
Javascript
// Recursive C++ program to find minimum #include <iostream>using namespace std; // function to print Minimum element using recursionint findMinRec(int A[], int n){    // if size = 0 means whole array has been traversed    if (n == 1)        return A[0];    return min(A[n-1], findMinRec(A, n-1));} // driver code to test above functionint main(){    int A[] = {1, 4, 45, 6, -50, 10, 2};    int n = sizeof(A)/sizeof(A[0]);    cout <<  findMinRec(A, n);    return 0;}
// Recursive Java program to find minimumimport java.util.*; class GFG {     // function to return minimum element using recursion    public static int findMinRec(int A[], int n)    {      // if size = 0 means whole array      // has been traversed      if(n == 1)        return A[0];                 return Math.min(A[n-1], findMinRec(A, n-1));    }         // Driver code    public static void main(String args[])    {        int A[] = {1, 4, 45, 6, -50, 10, 2};        int n = A.length;                 // Function calling        System.out.println(findMinRec(A, n));    }} //This code is contributed by Niraj_Pandey
# Recursive python 3 program to# find minimum # function to print Minimum element# using recursiondef findMinRec(A, n):         # if size = 0 means whole array    # has been traversed    if (n == 1):        return A[0]    return min(A[n - 1], findMinRec(A, n - 1)) # Driver Codeif __name__ == '__main__':    A = [1, 4, 45, 6, -50, 10, 2]    n = len(A)    print(findMinRec(A, n)) # This code is contributed by# Shashank_Sharma
// Recursive C# program to find minimumusing System; class GFG{     // function to return minimum// element using recursionpublic static int findMinRec(int []A,                             int n){// if size = 0 means whole array// has been traversedif(n == 1)    return A[0];         return Math.Min(A[n - 1],                    findMinRec(A, n - 1));} // Driver codestatic public void Main (){    int []A = {1, 4, 45, 6, -50, 10, 2};    int n = A.Length;         // Function calling    Console.WriteLine(findMinRec(A, n));}} // This code is contributed by Sachin
<?php// Recursive PHP program to find minimum // function to print Minimum// element using recursionfunction findMinRec($A, $n){         // if size = 0 means whole    // array has been traversed    if ($n == 1)        return $A[0];    return min($A[$n - 1], findMinRec($A, $n - 1));}     // Driver Code    $A = array (1, 4, 45, 6, -50, 10, 2);    $n = sizeof($A);    echo findMinRec($A, $n); // This code is contributed by akt?>
<script> // Javascript program to find minimum // Function to print Minimum// element using recursionfunction findMinRec(A, n){         // If size = 0 means whole    // array has been traversed    if (n == 1)        return A[0];             return Math.min(A[n - 1],        findMinRec(A, n - 1));} // Driver Codelet A = [ 1, 4, 45, 6, -50, 10, 2 ];let n = A.length; document.write( findMinRec(A, n)); // This code is contributed by sravan kumar G </script>
Output: 
-50
Recursive approach to find the Maximum element in the array
Approach:  
Get the array for which the maximum is to be found
Recursively find the maximum according to the following: Recursively traverse the array from the endBase case: If the remaining array is of length 1, return the only present element i.e. arr[0]  
Recursively traverse the array from the end
Base case: If the remaining array is of length 1, return the only present element i.e. arr[0]  
if(n == 1)
   return arr[0];
Recursive call: If the base case is not met, then call the function by passing the array of one size less from the end, i.e. from arr[0] to arr[n-1].
Return statement: At each recursive call (except for the base case), return the maximum of the last element of the current array (i.e. arr[n-1]) and the element returned from the previous recursive call.  
return max(arr[n-1], recursive_function(arr, n-1));
Print the returned element from the recursive function as the maximum element
Pseudocode for Recursive function:  
If there is single element, return it.
Else return maximum of following.
    a) Last Element
    b) Value returned by recursive call
       fir n-1 elements.
Below is the implementation of the above approach:
C++
Java
Python3
C#
PHP
Javascript
// Recursive C++ program to find maximum#include <iostream>using namespace std; // function to return maximum element using recursionint findMaxRec(int A[], int n){    // if n = 0 means whole array has been traversed    if (n == 1)        return A[0];    return max(A[n-1], findMaxRec(A, n-1));} // driver code to test above functionint main(){    int A[] = {1, 4, 45, 6, -50, 10, 2};    int n = sizeof(A)/sizeof(A[0]);    cout <<  findMaxRec(A, n);    return 0;}
// Recursive Java program to find maximumimport java.util.*; class GFG {         // function to return maximum element using recursion    public static int findMaxRec(int A[], int n)    {      // if size = 0 means whole array      // has been traversed      if(n == 1)        return A[0];                 return Math.max(A[n-1], findMaxRec(A, n-1));    }     // Driver code    public static void main(String args[])    {        int A[] = {1, 4, 45, 6, -50, 10, 2};        int n = A.length;                 // Function calling        System.out.println(findMaxRec(A, n));    }} //This code is contributed by Niraj_Pandey
# Recursive Python 3 program to# find maximum # function to return maximum element# using recursiondef findMaxRec(A, n):     # if n = 0 means whole array    # has been traversed    if (n == 1):        return A[0]    return max(A[n - 1], findMaxRec(A, n - 1)) # Driver Codeif __name__ == "__main__":         A = [1, 4, 45, 6, -50, 10, 2]    n = len(A)    print(findMaxRec(A, n)) # This code is contributed by ita_c
// Recursive C# program to find maximumusing System; class GFG{// function to return maximum// element using recursionpublic static int findMaxRec(int []A,                             int n){// if size = 0 means whole array// has been traversedif(n == 1)    return A[0];         return Math.Max(A[n - 1],                    findMaxRec(A, n - 1));} // Driver codestatic public void Main (){    int []A = {1, 4, 45, 6, -50, 10, 2};    int n = A.Length;         // Function calling    Console.WriteLine(findMaxRec(A, n));}} // This code is contributed by Sach_Code
<?php// Recursive PHP program to find maximum // function to return maximum// element using recursionfunction findMaxRec($A, $n){    // if n = 0 means whole array    // has been traversed    if ($n == 1)        return $A[0];    return max($A[$n - 1],        findMaxRec($A, $n - 1));} // Driver Code$A = array(1, 4, 45, 6, -50, 10, 2);$n = sizeof($A);echo findMaxRec($A, $n); // This code is contributed// by Akanksha Rai?>
<script> // Recursive Java program to find maximum // Function to return maximum element// using recursionfunction findMaxRec(A, n){         // If size = 0 means whole array    // has been traversed    if (n == 1)        return A[0];         return Math.max(A[n - 1],        findMaxRec(A, n - 1));} // Driver codelet A = [ 1, 4, 45, 6, -50, 10, 2 ];let n = A.length; // Function callingdocument.write(findMaxRec(A, n)); // This code is contributed by sravan kumar G </script>
Output: 
45
Related article: Program to find largest element in an array
This article is contributed by Pratik Chhajer. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
Niraj_Pandey
jit_t
Sach_Code
Akanksha_Rai
Shashank_Sharma
ukasp
RajaHamza
sravankumar8128
Arrays
Recursion
Searching
Arrays
Searching
Recursion
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Program to find sum of elements in a given array
Building Heap from Array
Window Sliding Technique
1's and 2's complement of a Binary Number
Reversal algorithm for array rotation
Write a program to print all permutations of a given string
Recursion
Backtracking | Introduction
Program for Tower of Hanoi
Sort a stack using recursion