//Very very poor technique.. there must be a better way.. import java.util.Scanner; public class HipToBeSquare { public static boolean isSquared(int x, int y){ if (y == 0) return false; if (x - y * y == 0){ System.out.println(y); return true; } else{ int newNum = (x - y * y); if(isSquared(newNum, highestSquare(newNum)) == false){ if(isSquared(x, y - 1)) System.out.println(y); return true; } else return true; } // System.out.println("This line should never be reached"); // return false; } public static int highestSquare(int x){ for (int i = 1; i <= 100; i++){ if (x >= i * i) continue; else return i - 1; } return 0; } public static void main(String args[]){ Scanner reader = new Scanner(System.in); System.out.print("Enter a number: "); int number = reader.nextInt(); System.out.println(highestSquare(number)); isSquared(number, highestSquare(number)); } }