[問題] 請問C++的return
各位板大好,小弟還是C++的新手,想請教關於return值的跑法
下面程式最左邊是我key的編號,想請問在最下面輸出結果的編號43~46
在debug裡,一行行逐步執行的時候發現,只是在重覆執行27、28行的程式
為什麼會有這現象呀? 在第28行return ii的時候,不是應該回傳到main嗎
怎麼會跑到27行去列印?
而且在什麼時候才會列印出 main()裡的35、36行呢?
(就是當什麼條件成立時才會輸出編號47、58的結果)
問題有點多,也許是我的程式觀念有問題,麻煩知道的高手幫我解惑了 m(_ _)m
1 #include <iostream>
2 using namespace std;
3
4 int binsearch(int *dset, int ib, int ie, int data)
5 {
6 cout << "search: ib = " << ib << ", ie = " << ie << endl;
7 int ii;
8
9 if (ib > ie)
10 {
11 ii = -1;
12 }
13 else
14 {
15 ii = (ib + ie) / 2;
16
17 if (dset[ii] > data)
18 {
19 ii = binsearch(dset, ib, ii-1, data);
20 }
21 else if (dset[ii] < data)
22 {
23 ii = binsearch(dset, ii+1, ie, data);
24 };
25 };
26
27 cout <<"search ib = "<<ib<<", ie = "<<ie<<" return: "<<ii<<endl;
28 return ii;
29 }
30
31 int main()
32 {
33 int dset[] = {1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33};
34
35 cout << "Final data 13 is at: " << binsearch(dset,0,15,13) << endl;
36 cout << "Final data 20 is at: " << binsearch(dset,0,15,20) << endl;
37 return 0;
38 }
=====================================================================
輸出結果:
39 search: ib = 0, ie = 15
40 search: ib = 0, ie = 6
41 search: ib = 4, ie = 6
42 search: ib = 6, ie = 6
43 search ib = 6, ie = 6 return: 6
44 search ib = 4, ie = 6 return: 6
45 search ib = 0, ie = 6 return: 6
46 search ib = 0, ie = 15 return: 6
47 Final data 13 is at: 6
48 search: ib = 0, ie = 15
49 search: ib = 8, ie = 15
50 search: ib = 8, ie = 10
51 search: ib = 10, ie = 10
52 search: ib = 10, ie = 9
53 search ib = 10, ie = 9 return: -1
54 search ib = 10, ie = 10 return: -1
55 search ib = 8, ie = 10 return: -1
56 search ib = 8, ie = 15 return: -1
57 search ib = 0, ie = 15 return: -1
58 Final data 20 is at: -1
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.206.193.250
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1396624270.A.58B.html
推
04/05 00:26, , 1F
04/05 00:26, 1F
→
04/05 00:32, , 2F
04/05 00:32, 2F
→
04/05 00:34, , 3F
04/05 00:34, 3F
推
04/05 01:43, , 4F
04/05 01:43, 4F
→
04/05 01:43, , 5F
04/05 01:43, 5F
→
04/05 13:35, , 6F
04/05 13:35, 6F
推
04/05 18:40, , 7F
04/05 18:40, 7F
→
04/05 18:41, , 8F
04/05 18:41, 8F
→
04/05 18:42, , 9F
04/05 18:42, 9F
→
04/05 18:42, , 10F
04/05 18:42, 10F
推
04/06 15:08, , 11F
04/06 15:08, 11F
→
04/06 15:08, , 12F
04/06 15:08, 12F
→
04/09 00:06, , 13F
04/09 00:06, 13F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
-4
5