递归地找到一个元素(c ++)

时间:2017-04-27 14:00:33

标签: c++ recursion

int searching(string arr [],int sizee,string element) {
    static int location;
    if(arr[sizee-1]==element) {
        location = sizee;
        return location;
    }
    else location = searching(arr, sizee-1, element);
}

我已使用此功能搜索元素。

它适用于大小为2的数组,但不仅仅是它给了我错误的位置。 另外我想知道如果它找不到元素,如何使它返回-1。

2 个答案:

答案 0 :(得分:3)

您的代码有一些错误/不需要的东西。最大的问题是,当数组中不存在该元素时,您没有停止条件。目前你只是消极并且使用负索引访问数组是未定义的行为。

另一个问题是location。这不是必需的。找到元素后,您只需直接返回位置即可。无需设置变量然后返回该变量。因此,进行这些更改会为您提供类似

的功能
int searching(string arr [],int sizee,string element) {
    if (sizee <= 0)
        return -1; // we did not find the element in the array or the caller gave us a negative size
    if(arr[sizee-1]==element)
        return sizee-1; // just return the index you used
    // no else needed here.  Just return the result of calling the function recursively 
    return searching(arr, sizee-1, element);
}

答案 1 :(得分:1)

首先,你必须确保,sizee大于零,否则你将超过flow.second,第三个函数参数元素的数据类型应该是char,没有字符串。