我有一个使用递归的任务。我仍然无法理解递归,或者至少理解它是如何工作的,但我想我已经开始掌握它,即使我不太确定为什么会有任何工作。
我的作业分为两部分,但目前我只需要第一部分的帮助。这是我必须做的:
编写一个递归函数,该函数将返回 C 字符串中第一次出现 > 字符的位置
这是我目前所拥有的......
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
int test(string s, char x);
int main ()
{
test("lets test for the letter s", "s" );
}
int test(string s, char x)
{
if(s.length() == 0)
return 0;
else if (s[0] == x)
return 1 + test(s.substr(1, s.length()), x);
else
return test(s.substr(1, s.length()), x);
}
所以我认为这应该可行,但我对如何让函数来测试任何东西有点困惑。我很确定我在 main 的函数调用中正确完成了字符串部分,但我无法让 char 接受一个值。按照我的理解,我应该输入要扫描的文本,然后输入要查找的字符。谁能告诉我我做错了什么,或者我什至接近递归函数?