首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于递归的返回值有关问题

2013-01-06 
关于递归的返回值问题这是一个二分查找的函数int fun(int a[],int x,int low,int high)//x为要查找的值{if

关于递归的返回值问题
这是一个二分查找的函数
int fun(int a[],int x,int low,int high)//x为要查找的值
{
if(low <= high)
{
int mid = (low + high) / 2;
cout<<mid<<endl;
if(x == a[mid])return mid;
else
if(x < a[mid])
return fun(a,x,low,mid - 1);
else
return fun(a,x,mid + 1,high);



}
        return 0;
}
递归不是当遇到符合条件的就返回,结束递归吗,
但是这个函数当x == a[mid]的时候应该返回的吧
可是我的到的结果不管怎么返回都是0
为什么?????是因为返回mid 又返回0 给覆盖了吗?
那要是在最后加else return 0;呢??
[解决办法]

引用:
这是一个二分查找的函数
int fun(int a[],int x,int low,int high)//x为要查找的值
{
if(low <= high)
{
int mid = (low + high) / 2;
cout<<mid<<endl;
if(x == a[mid])return mid;
else
if(x < a[mid])
retu……

楼主用的什么编译器,我在VS2010上运行结果正确


int fun(int a[],int x,int low,int high)//x为要查找的值
{
if(low <= high)
{
int mid = (low + high) / 2;
cout<<mid<<endl;
if(x == a[mid])return mid;
else
if(x < a[mid])
return fun(a,x,low,mid - 1);
else
return fun(a,x,mid + 1,high);



}
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int x=3;
int low=1;
int high=10;
int i=fun(a,x,1,10);
cout<<i<<endl;
system("pause");
return 0;
}

i的值输出2
[解决办法]
问题可能不是出在这个函数。

引用:
这是一个二分查找的函数
int fun(int a[],int x,int low,int high)//x为要查找的值
{
if(low <= high)
{
int mid = (low + high) / 2;
cout<<mid<<endl;
if(x == a[mid])return mid;
else
if(x < a[mid])
retu……

热点排行