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。
答案 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,没有字符串。