int BinarySearch(int A[], int p, int r, int value)
{
int q = (p + r)/2;
if (A[q] == value)
{
return q; //value found
}
if (p == q)
{
return 0; //not found
}
if (A[q] > value)
{
return BinarySearch(A, p, q, value);
}
else
{
return BinarySearch(A, q + 1, r, value);
}
} //binary search ends here
現在,問題是,無論何時我想搜索數組的最後一個元素,此代碼都會給出錯誤。 任何人都可以請解釋爲什麼?遞歸二進制搜索不能正常工作
這[行之有效的ideone(http://ideone.com/9NLYIj)。你能提供一組你的代碼失敗的數據嗎? – dasblinkenlight
好的問題解決了我應該寫第二條件,如果在最後檢查p == q的條件現在它工作正常。順便說一句,任何改善此代碼的建議將不勝感激。 – sunki08
@ dasblinkenlight我正在使用dev C++ ide並輸入1 2 3 4 5的數組,並檢查5它說沒有找到 – sunki08