文字列が与えられた場合、文字列中の小文字の「x」文字の数を再帰的に(ループなしで)計算します。Java与えられた文字列のxを再帰的に数える
countX( "xxhixx")→4
countX( "xhixhix")→3
countX( "こんにちは")→0
私の試み:
public int countX(String str) {
int sum = 1;
if(str.length()-1==0){
return sum;
}
else{
if(str.charAt(0)=='x'){
return sum+countX(str.substring(1));
}
if(str.charAt(0)!='x'){
return countX(str.substring(1));
}
}
}
次のエラーメッセージが表示されます。This method must return a result of type int.
私のベースケースが正しいかどうかはわかりません。何かヒント?
条件の外での返品はありません。 – KyleKW
*あなたは '=='と '!='は互いに排他的ですが、コンパイラはそれを認識できません。 '!='の代わりに 'else'を使います。 – chrylis
@chrylis:厳密に言えば、ここでの相互排他性は本当に重要ではありません。重要なことは、2つのifがすべての可能性を使い果たしているということです。それらは重なり合う可能性があり、したがって相互に排他的ではありません。逆に、それらは相互に排他的ですが、すべての可能性を網羅していません。 – NPE