我正在使用递归编写这个简单的线性搜索代码,但仍然遇到了一些问题。 总是得到假的回报价值。
代码如下:
main()
{
int arr[10] = {12,13,75,23,6,45,90,41,61,56};
int i, j, num;
cout<<" Find number :- ";
cin>>num;
bool check = find(arr, num, 0, 10);
cout<<" check = "<<check<<endl;
system("PAUSE");
return 0;
}
bool find(int arr[], int key, int first, int size)
{
if(first > size)
return false;
else
{
if(arr[first] == key)
return true;
else
find(arr, key, first+1, size);
}
}
答案 0 :(得分:2)
尝试在启动功能之前添加返回
bool find(int arr[], int key, int first, int size)
{
if(first > size)
return false;
else
{
if(arr[first] == key)
return true;
else
return find(arr, key, first+1, size);
}
}
答案 1 :(得分:2)
两件事:
if(first > size)
return false;
这应该是&gt; = not&gt;,否则你最终会尝试访问下面的数组范围。
if(arr[first] == key)
return true;
else
find(arr, key, first+1, size);
在这里,您需要记住显式返回find()的值。否则你只会得到一个垃圾回收值(恰好是假的)。
答案 2 :(得分:0)
我认为这很简单
首先,你必须检查直到第9个索引,因为索引从0开始,到9结束。 否则可能会导致运行时错误。
负责声明函数和头文件。