1: /** @file max_of_integer_array.cpp 2: Finds the maximum value in an array of integers. 3: Uses a recursive function which applies one recursive call 4: to a portion of the array that becomes smaller and smaller. 5: */ 7: #include <iostream> 8: using namespace std; 10: #include "utilities.h" 11: using Scobey::Pause; 13: int maxArrayValue 14: ( 15: const int a[], //in 16: int first, //in 17: int last //in 18: ) 19: /**< 20: Compute the maximum value from the index interval 21: [first, last] in the array. 22: @return The maximum value from the interval [first, last]. 23: @param a An array of integers. 24: @param first The lower index of the interval to be examined. 25: @param last The upper limit of the interval to be examined. 26: @pre The array a has been initialized, and 27: 0 <= first <= last <= (number of elements in a) - 1. 28: @post No side effects. 29: */ 30: { 31: if (first == last) 32: return a[first]; 33: else 34: { 35: int maxOfRest = maxArrayValue(a, first+1, last); 36: return (a[first] > maxOfRest) ? a[first] : maxOfRest; 37: } 38: } 40: int main() 41: { 42: cout << "\nThis program illustrates the application " 43: "of recursion to an array.\n"; 44: Pause(); 46: int a1[10] = {5, -6, 12, 43, 17, -3, 29, 14, 35, 4}; 47: cout << "The maximum value in the first array is " 48: << maxArrayValue(a1, 0, 9) << ".\n"; 49: Pause(); 51: int a2[10] = {-5, -6}; 52: cout << "The maximum value in the second array is " 53: << maxArrayValue(a2, 0, 9) << ".\n"; 54: Pause(); 56: int a3[] = {1, 3, 5, 7, 9, 11}; 57: cout << "The maximum value in the third array is " 58: << maxArrayValue(a3, 0, 5) << ".\n"; 59: Pause(); 61: int a4[] = {26, 24, 22, 20, 16, 12, 0}; 62: cout << "The maximum value in the fourth array is " 63: << maxArrayValue(a4, 0, 6) << ".\n"; 64: Pause(); 65: }