public String looking (int x, int y, boolean[][] wasHere, String word) { System.out.println("Currently testing: " + word); System.out.println(" Recursed " + word.length() + " levels"); if (wasHere == null) { wasHere = new boolean[size][size]; for (int ax = 0; ax < size; ax++) for (int ay = 0; ay < size; ay++) wasHere[ax][ay] = false; } boolean [][] workingWasHere = wasHere; if(word.contentEquals(""))word += board[x][y]; if(isValidWord(word)) foundwords.add(word.toLowerCase()); workingWasHere[x][y] = true; String newword = ""; for(int dy = -1;dy <= 1; dy++) { for(int dx = -1; dx <= 1 /*&& !(dx==0 && dy==0)*/; dx++) { int newx = x + dx, newy = y + dy; System.out.print("Currently looking at: (" + newx + "," + newy +")"); boolean inrange = ((newx) < size && (newx) >= 0) && ((newy) < size && (newy) >= 0); if(inrange && !workingWasHere[newx][newy]) { newword = word + board[newx][newy]; System.out.println(" - " + newword); if(this.isValidPrefix(newword)) { looking(newx, newy, workingWasHere, newword); } } else if (!inrange) System.out.println("- Out of range"); else if (workingWasHere[newx][newy]) System.out.println("- Already was there"); //System.out.println(word + board[x+dx][y+dy] + "\n (" + (x+dx) + "," + (y+dy) + ")"); } } return newword; }