Source of Exercise12.cpp


  1: //  Created by Frank M. Carrano and Tim Henry.
  2: //  Copyright (c) 2013 __Pearson Education__. All rights reserved.

  4: int search(int first, int last, int n);
  5: int mystery(int n);

  7: int main()
  8: {
  9:    cout << mystery(30) << endl;
 10:    return 0;
 11: }  // end main

 13: int search(int first, int last, int n)
 14: {
 15:    int returnValue = 0;
 16:    cout << "Enter: first = " << first << " last = "
 17:         << last << endl;
 18:    
 19:    int mid = (first + last)/2;
 20:    if ( (mid * mid <= n) && (n < (mid+1) * (mid+1)) )
 21:       returnValue = mid;
 22:    else if (mid * mid > n)
 23:       returnValue = search(first, mid-1, n);
 24:    else
 25:       returnValue = search(mid+1, last, n);
 26:    
 27:    cout << "Leave: first = " << first << " last = "
 28:         << last << endl;
 29:    return returnValue;
 30: }  // end search

 32: int mystery(int n)
 33: {
 34:    return search(1, n, n);
 35: }  // end mystery