我非常接近完成我的功能。我需要取2个字符串,并在字符串1中返回字符串2的索引。我知道有一个find函数,但我无法使用它。它还必须通过递归编程来完成。
我有以下内容。
int index_of(string haystack, string needle) {
int index = 0;
string test = haystack.substr(index, needle.length());
if (test == needle) {
return index;
}
else {
return 1 + index_of(haystack.substr(1), needle);
}
}
它在大海捞针中返回针的索引没有问题,但有两件事需要做,我无法弄明白。
1)如果针不在大海捞针中,则需要返回-1。我已经完成了它,所以如果它不存在,它返回-1,但因为它是递归的,它然后添加其他时间它返回1.我不知道如何只返回一个值的结尾没有在其上添加所有其他实例。
2)我想在其中使用辅助函数,我也不知道该怎么做。
感谢您的帮助!
答案 0 :(得分:4)
通常,您希望返回未掺杂的递归函数的值。在你的情况下,这个:
return 1 + index_of(some_parameters);
应该是这样的:
return index_of(some_parameters);
现在,您只需选择参数,以便在需要返回索引之前跟踪索引,或者-1。
一个这样的函数可能有构造函数:
index_of(string haystack, string needle, int index);
答案 1 :(得分:0)
这是一个演示程序,展示了如何实现该功能。
string "gh" is found in string "asdfghjkl" at position 4
它的输出是
reshape2::melt
当然,最简单的方法是定义一个静态变量,该变量将保持源字符串中的当前位置。但在这种情况下,我不认为这样的函数是纯粹的递归"。