-1
對於A = {1,2,3,4}
和函數調用b_search(3, 0, arr.size() - 1, arr) //arr being a vector
。 當我打印mid
返回2,但是當我在地方印刷mid
的返回mid
返回值的函數內部0爲什麼這個簡單的二進制搜索不能返回正確的mid值正確值?
int b_search(int tbs, int p, int q, vector<int> A){
if (p < q) {
int mid = p + (q - p)/2;
if (A[mid] == tbs){
return mid;
} else if (tbs < A[mid]) {
b_search(tbs, 0, mid - 1, A);
} else {
b_search(tbs, mid + 1, q, A);
}
}
}
打開你的編譯器警告,它會提醒你有關丟失的回報。 – Jarod42