public class RecursivePalindrome {
  public static boolean isPalindrome(String s) {
    return isPalindrome(s, 0, s.length() - 1);
  }

  private static boolean isPalindrome(String s, int low, int high) {
    if (high <= low) // Przypadek bazowy
      return true;
    else if (s.charAt(low) != s.charAt(high)) // Przypadek bazowy
      return false;
    else
      return isPalindrome(s, low + 1, high - 1);
  }

  public static void main(String[] args) {
    System.out.println("Czy pole jest palindromem? "
      + isPalindrome("pole"));
    System.out.println("Czy ABBA jest palindromem? "
      + isPalindrome("ABBA"));
    System.out.println("Czy a jest palindromem? " + isPalindrome("a"));
    System.out.println("Czy aba jest palindromem? " + isPalindrome("aba"));
    System.out.println("Czy ab jest palindromem? " + isPalindrome("ab"));
  }
}
