私はリターンの仕組みを理解していたのですが、再帰に入った後は元々考えられていたものより少し失われていると思います。リカーシブ関数で返された結果はどのように計算されますか?
私はカウントのための関数を持っているとします。これは、文字が文字列内で何回ポップアップするかを示します。
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);
}
}
私は、文字列「ジェフ」、それに合格していたと「F」を探しているなら、それは2
の値を返します。
これはどのように停止するのですか?
戻り値の型
int
を持つ任意のメソッドを終了return 0
ていますか?もしそうなら、なぜそれがまだ最終リターンが
0
を返すと言うとき、2
の値を返すのですか?
'pos> inputString.length()'が真の場合はどうなりますか? – Kaz
それからちょうど0を返しますか?明らかに、私がメソッドを呼び出すと、posパラメータに0を渡します。文字列は-1の長さの値を保持できません。 – Podo