【发布时间】:2021-05-29 05:49:21
【问题描述】:
int charFrequency( string str, char c,int subscript) {
if (subscript >= str.length())
{
return 0;
}
else if (str[subscript] == c)
{
return 1 + charFrequency(str, c, subscript+ 1);
}
else
{
return charFrequency(str, c, subscript+ 1);
}
}
这是我的递归函数,它没有任何问题,但是我必须修改它以使其仅使用两个参数字符串和字符 c 我不能在函数中有额外的下标参数,但我可以弄清楚如何使它工作,我想我精神受阻,无法这样做。任何帮助将不胜感激。
【问题讨论】:
-
代码应该做什么?请出示minimal reproducible example
-
递归做某事的典型方法是让递归案例做一些“更小”的事情。然后,最终,“更小”的东西变得一无所有,你就完成了。你可以这样想,或者你可以“颠倒”地想它:什么是最小的情况:无事可做。 next-to 最小的情况是什么?如何一步一步从那里得到最小的情况?
-
对不起,我应该澄清一下,但基本上它接受任何字符串以及任何字符,然后它将输出该字符在该字符串中出现的次数,例如 CharFrequency("aaaa",a ) 输出为 4
-
string str按值传递。您可以每次都使字符串稍微小一些,而不是对其进行迭代。注意:这是对递归的非常糟糕的使用。我假设这是一项任务,你别无选择,但是当你开始实际编程时,不要对自己这样做。 -
@Nicholas “我应该澄清一下” -- 你使用过去时好像这是你无法改变的。想想现在时:你应该澄清(通过使用“编辑”链接将该信息添加到你的问题中)。