gpt4 book ai didi

c++ - 如何在递归函数中计算返回结果?

转载 作者:行者123 更新时间:2023-11-30 01:10:42 25 4
gpt4 key购买 nike

到目前为止,我认为我理解返回是如何工作的,但是一旦我了解了递归,我想我比最初想的更迷茫了。

假设,我有一个计数函数,计算一个字符在字符串中弹出的次数。

int frequency(char ch, string input, int pos) {
if (pos == inputString.length()) {
return 0;
}

if (inputString[pos] == ch) {
return 1 + frequency(ch, inputString, pos + 1);
}
else {
return frequency(ch, inputString, pos+1);
}
}

如果我将字符串“Jeff”传递给它并查找“f”,它会返回值 2

那么,它如何知道何时停止?

  • return 0 是否结束任何返回类型为 int 的方法?

  • 如果是这样,为什么它仍然返回 2 的值,当 final 返回说返回 0 时?

最佳答案

最后一次返回

return 0;

只是函数在递归过程中最后一次被调用。这是在某个时候停止递归所必需的。对于在执行最后一个其他返回语句之前的调用,例如:

return 1 + frequency(ch, inputString, pos + 1);

因此 0 与 1 和递归的任何先前结果相加。

附言:只要函数返回语句再次调用该函数,递归就会继续。仅当 return 仅返回某些内容(无需再次调用函数)时,递归才会停止。

下面是一个更简单的例子,计算所有整数的总和,直到 N:

int calcSum(int N){

if ( N == 1 ) return 1; // recursion stops here

return N + calcSum( N-1 ); // otherwise continue to add up

}

一个函数中的多个return 语句对于递归来说并不特殊。该函数只在它遇到的第一个返回时返回。

关于c++ - 如何在递归函数中计算返回结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37308418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com