我想在C++中實現遞歸二進制搜索。但是我的算法找不到測試數組中的最後兩個元素。我知道我錯過了一些東西。我已經搜索了很多二進制搜索算法的實現,但沒有成功。任何人都可以幫助我嗎?遞歸二進制搜索沒有if-else語句的C++
bool isMember (int x, int a[], int size){
if (size == 0) return false;
return a[size/2] == x ||
(a[size/2] < x && isMember (x,a+size/2,(size)/2)) ||
(a[size/2] > x && isMember (x,a,(size)/2));
}
你怎麼知道它是你的中間元素沒有一個if語句? – MeetTitan
'member'函數做什麼? –
@MeetTitan a [size/2]表示每次遞歸調用的中間元素。我的錯是我的意思。 – yanis