/* * RecurPalindrome - implementing a recursive method for determining * if a string is a palindrome */ import java.util.Scanner; public class RecurPalindrome { public static void main(String[] args) { System.out.println("\nWelcome to the Palindrome Test Program!"); // Reads in one string from the user Scanner userInput = new Scanner(System.in); System.out.print("\nType in a word and press enter: "); String word = userInput.next(); userInput.close(); // Call the recursive function here by replacing true with your call. boolean isPalindrome = rPalindrome(word); // Printing out the result if (isPalindrome) { System.out.println("Palindrome!"); } else { System.out.println("Not a palindrome!"); } } private static boolean rPalindrome(String s) { int length = s.length(); // first base case: s is empty or has only one character if (length <= 1) { return true; } // second base case: outer characters don't match if (s.charAt(0) != s.charAt(length-1)) { return false; } // recursive case return rPalindrome(s.substring(1, length-1)); } // alternative solution with a single return statement and // an implicit base case private static boolean rPalindrome2(String s) { boolean isPal = true; if (s.length() > 1) { int length = s.length(); if (s.charAt(0) == s.charAt(length-1)) { isPal = rPalindrome2(s.substring(1, length-1)); } else { isPal = false; } } return isPal; } }