import java.util.Scanner; public class RecurPalindrome { public static void main(String[] args) { // Welcome message System.out.println("\nWelcome to the Palindrome Test Program!"); // Takes in one user input Scanner userInput = new Scanner(System.in); System.out.println("\nType in a word and press enter:"); String word = userInput.nextLine(); userInput.close(); // Calling the recursive function here! boolean isPalindrome = rPalindrome2(word); // Printing out the result if (isPalindrome) System.out.println("Palindrome!"); else System.out.println("Not a palindrome!"); } // // rcursive soluton to determining if a string // is a palindrome. // // Note, the explixit base case. // private static boolean rPalindrome(String s) { // Base Case if (s.length() <= 1) return true; // Recursive Case // // Check and make appropriate recursive calls // Remove any spaces recursively, assuming no special characters // int length = s.length(); if (s.charAt(0) == ' ') return rPalindrome(s.substring(1,length)); else if (s.charAt(length-1) == ' ') return rPalindrome(s.substring(0,length-1)); else if (s.charAt(0) == s.charAt(length-1)) return rPalindrome(s.substring(1,length-1)); else return false; } // // an alternative version // // Note, the explixit base case. // private static boolean rPalindrome2(String s) { boolean isPal = true; if (s.length() > 1) { int length = s.length(); if (s.charAt(0) == ' ') isPal = rPalindrome2(s.substring(1,length)); else if (s.charAt(length-1) == ' ') isPal = rPalindrome2(s.substring(0,length-1)); else if (s.charAt(0) == s.charAt(length-1)) isPal = rPalindrome2(s.substring(1,length-1)); else isPal = false; } return( isPal ); } }