有关递归函数的返回值问题,最外层是否要有返回值?
加入Return的程序
1
//
二分查找
2 template < typename T >
3 int findVector(std::vector < T > & dataSet , T findValue , int p , int q )
4 {
5 int m = std::floor((p + q) / 2.0 );
6 if (dataSet[m] == findValue)
7 return m;
8 else if (p < q)
9 {
10 if (dataSet[m] > findValue)
11 return findVector(dataSet,findValue,p,m - 1 );
12 else
13 return findVector(dataSet,findValue,m + 1 ,q);
14 }
15 else
16 return - 1 ;
17 }
2 template < typename T >
3 int findVector(std::vector < T > & dataSet , T findValue , int p , int q )
4 {
5 int m = std::floor((p + q) / 2.0 );
6 if (dataSet[m] == findValue)
7 return m;
8 else if (p < q)
9 {
10 if (dataSet[m] > findValue)
11 return findVector(dataSet,findValue,p,m - 1 );
12 else
13 return findVector(dataSet,findValue,m + 1 ,q);
14 }
15 else
16 return - 1 ;
17 }
去掉 11行和13行的return依然可以得到正确的结果?