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 13Biggest no in the array is 13
C implementation to find the Biggest Number in an Array of Numbers using Recursion
#include <stdio.h>
#include <stdlib.h>
#include <limits.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
Algorithm:
Explanation with example:
C implementation to find the Biggest Number in an Array of Numbers using Recursion
Output
need an explanation for this answer? contact us directly to get an explanation for this answer