Я додумался до этого момента, что понял, как работает возврат, но как только я попал в рекурсии, я полагаю, что я немного потерял, чем первоначально думал.Как результаты возврата вычисляются в рекурсивной функции?
Предположим, у меня есть функция для подсчета, что сколько раз символ появляется в строке.
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» и ищет «е», то она возвращает значение 2
.
Итак, как он узнает, когда остановиться?
ли
return 0
конец любой метод с возвращаемым типомint
?И если да, то почему он до сих пор возвращает значение
2
, когда окончательного возвращение говорит вернуться0
?
Что делать, если 'pos> inputString.length()' истинно? – Kaz
Тогда он просто вернет 0? Очевидно, когда я вызываю метод, я передаю параметр pos a 0. Строка не может содержать значение длины -1, не так ли? – Podo