C ++递归线性搜索失败

时间:2014-05-16 13:25:04

标签: c++ algorithm

我正在使用递归编写这个简单的线性搜索代码,但仍然遇到了一些问题。 总是得到假的回报价值。

代码如下:

 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);
    }
}

3 个答案:

答案 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结束。 否则可能会导致运行时错误。

负责声明函数和头文件。