Maze Finder

Find the way through a maze with recursion.

public class MazeSolver {
    private static final int PATH = 1;
    private static final int WALL = 0;
    private static final int VISITED = 2;

    public static boolean solveMaze(int[][] maze, int x, int y) {
        if (x < 0 || y < 0 || x >= maze.length || y >= maze[0].length) {
            return false;
        }

        if (maze[x][y] == WALL || maze[x][y] == VISITED) {
            return false;
        }

        if (x == maze.length - 1 && y == maze[0].length - 1) {
            return true;
        }

        maze[x][y] = VISITED;

        if (solveMaze(maze, x - 1, y) || solveMaze(maze, x + 1, y) || solveMaze(maze, x, y - 1) || solveMaze(maze, x, y + 1)) {
            return true;
        }

        return false;
    }

    public static void main(String[] args) {
        int[][] maze = {
            {PATH, WALL, PATH, PATH},
            {PATH, PATH, PATH, WALL},
            {WALL, WALL, WALL, PATH},
            {PATH, PATH, PATH, PATH}
        };

        if (solveMaze(maze, 0, 0)) {
            System.out.println("Path found!");
        } else {
            System.out.println("No path found.");
        }

        int[][] maze2 = {
            {PATH, WALL, PATH, PATH},
            {PATH, PATH, PATH, PATH},
            {WALL, WALL, WALL, PATH},
            {PATH, PATH, PATH, PATH}
        };

        if (solveMaze(maze2, 0, 0)) {
            System.out.println("Path found!");
        } else {
            System.out.println("No path found.");
        }
    }
}

MazeSolver.main(null);

No path found.
Path found!