1

文字列内の大文字の出現回数を見つけるための再帰的メソッドを作成しようとしています。以下の私のコード:

public class findUppercase {
public static int searchUppercase(String s, int high) {
    if (s.length() == 1) {
        if (Character.isUpperCase(s.charAt(0)))
            return 1;
        else
            return 0;
    } else if (Character.isUpperCase(s.charAt(high - 1)) )
        return 1 + searchUppercase(s, s.length() - 1);
      else
        return searchUppercase(s, s.length() - 1);

}

public static int searchUppercase(String s) {
    return searchUppercase(s, s.length());
}

public static void main(String[] args) {
    String a = "ABCmdsaA";
    System.out.println(searchUppercase(a));

}
}

エラーが発生します:

Exception in thread "main" java.lang.StackOverflowError
   at java.lang.Character.getType(Character.java:6924)
   at java.lang.Character.isUpperCase(Character.java:5518)
   at java.lang.Character.isUpperCase(Character.java:5488)
   at findUppercase.searchUppercase(findUppercase.java:9)
4

2 に答える 2