作者im96 (lala)
看板C_and_CPP
标题[问题] 关於binary search
时间Fri Nov 13 13:43:01 2009
使用环境: 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
1F:推 holymars:递回呼叫出来之後还是要跑完剩下的code啊 11/13 13:51