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