/* --------------------------------------------------------------------- ** Figure 21.3: A recursive program to find a minimum. ** --------------------------------------------------------------------- */ #include #define N 15 int array_min( int a[], int n ); void main( void ) { int data[N] = { 19, 17, 2, 43, 47, 5, 37, 23, 3, 41, 29, 31, 7, 11, 13 }; int answer; printf( "\n Find minimum in an array of %i positive integers.\n", N ); answer = array_min( data, N ); printf( "\n Minimum = %i\n\n", answer ); } /* -------------------------------------------------------------------- */ int array_min( int a[], int n ) { int tailmin, answer; printf( " Entering: n=%2i head=%2i \n", n, a[0] ); /* Base case. ---------------------------------------------------- */ if (n == 1) { printf( " ---- Base case ----\n" ); answer = a[0]; } /* Recursive step. ----------------------------------------------- */ else { tailmin = array_min( &a[1], n - 1 ); if (a[0] < tailmin) answer = a[0]; else answer = tailmin; } printf( " Leaving: n=%2i head=%2i returning=%2i \n", n, a[0], answer ); return answer; }