【发布时间】:2016-09-15 11:02:20
【问题描述】:
到目前为止,我认为我理解了 return 是如何工作的,但是一旦我进入递归,我想我比最初想象的更迷茫。
假设,我有一个计数函数,计算一个字符在字符串中弹出多少次。
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结束任何方法?如果是这样,为什么当 final 返回返回
0时,它仍然返回2的值?
【问题讨论】:
-
如果
pos > inputString.length()是真的呢? -
那么它只会返回 0?显然,当我调用该方法时,我将 pos 参数传递给 0。字符串不能保存长度值 -1,可以吗?