i'm trying implement binary search n size of array , it's not working recursion, when don't use recursion work, , don't seem understand why
int mid = 0; int low = 0; bool search(int value, int values[], int n) { { mid = (low + n)/2; if(values[mid] == value) { return true; } else if (values[mid]>value) { n= mid -1; return search(value, values, n); } else if (values[mid]<value) { low = mid + 1; return search(value, values, low); } } while (n > low); return false; }
the problem call recursive call search upper half of array pointer lower half. if value in upper half, won't find it. need like:
bool search(int value, int values[], int n) { int mid = n/2; if (n <= 0) { return false; } else if (values[mid] == value) { return true; } else if (values[mid] > value) { return search(value, values, mid); } else if (values[mid] < value) { return search(value, values + mid + 1, n - mid - 1); } }
Comments
Post a Comment