[問題] 關於binary search

看板C_and_CPP (C/C++)作者 (lala)時間16年前 (2009/11/13 13:43), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
使用環境: Dev C++ 執行結果 search:ib = 0, ie = 15 search: ib = 0, ie = 6 search: ib = 4, ie = 6 search: ib = 6, ie = 6 search ib = 6, ie = 6, return: 6 search ib = 4, ie = 6, return: 6 search ib = 0, ie = 6, return: 6 search ib = 0, ie = 15, return: 6 Final data 13 is at: 6 search:ib = 0, ie = 15 search: ib = 8, ie = 15 search: ib = 8, ie = 10 search: ib = 10, ie = 10 search: ib = 10, ie = 9 search ib = 10, ie = 9, return: -1 search ib = 10, ie = 10, return: -1 search ib = 8, ie = 10, return: -1 search ib = 8, ie = 15, return: -1 search ib = 0, ie = 15, return: -1 Final data 20 is at: -1 我的問題是 請問板上的高手為什麼會跑出黃色那幾行呀? 是程式哪裡寫錯了嗎? (剛接觸程式不久 如果問題太過簡單 還請各位包涵謝謝) 程式碼如下 #include <iostream> using namespace std; int binsearch(int * dset, int ib, int ie, int data) { cout << "search: ib = " << ib << ", ie = " << ie << endl; int ii; if (ib > ie) { ii = -1; } else { ii = (ib + ie) / 2; if (dset[ii] > data) { ii = binsearch(dset, ib, ii-1, data); } else if (dset[ii] < data) { ii = binsearch(dset, ii+1, ie, data); }; }; cout <<"search ib = "<<ib<<", ie = "<<ie<<" return: "<<ii<<endl; return ii; } int main() { int dset[] = {1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33}; cout << "Final data 13 is at: " << binsearch(dset,0,15,13) << endl; cout << "Final data 20 is at: " << binsearch(dset,0,15,20) << endl; return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.160.56.188

11/13 13:51, , 1F
遞迴呼叫出來之後還是要跑完剩下的code啊
11/13 13:51, 1F
文章代碼(AID): #1A_F7d7z (C_and_CPP)
文章代碼(AID): #1A_F7d7z (C_and_CPP)