#include <iostream> using namespace std; int binary_search(int str[], int n, int v) { int left = 0; int right = n - 1; int middle; while (left <= right) {
middle = (left + right)/2; if (str[middle] > v) { right = middle - 1; } else if (str[middle] < v) { left = middle + 1; } else return middle; } return -1; } int recursiveBinarySearch(int str[], int left, int right, int v) { if (left < right) { int middle = (left + right)/2; if (str[middle] > v) { return recursiveBinarySearch(str, left, middle - 1, v); } else if (str[middle] < v) { return recursiveBinarySearch(str, middle + 1, right, v); } else return middle; } else if (left == right) { if (str[left] == v) { return left; } else return -1; } } int _tmain(int argc, _TCHAR* argv[]) { int str[10] = {1, 3, 23, 34, 45, 65, 454, 555, 666, 2323}; printf("find 34 by recursiveBinarySearch: %d/n", recursiveBinarySearch(str, 0, 9, 343)); getchar(); return 0; }