Ich versuche, eine rekursive Methode zu erstellen, um die Anzahl der Vorkommen eines UpperCase Buchstaben in einem String zu finden. Mein Code unten:Rekursive Methode, um die Anzahl der Vorkommen von UpperCase Buchstaben in Zeichenfolge zu finden - Hilfsmethode verwenden
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));
}
}
ich den Fehler:
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)
Ja. Verwenden Sie für lineare Probleme immer for-Schleifen. Die Rekursivität ist viel langsamer und meist schwerer zu verstehen als Schleifen. – JayC667