Thanks to your advice, I came up with this solution:
function findAdjacent(matrix){ var x= 0,y=0; //starting point return check(x,y,matrix); } function check(x,y,matrix){//where the recursive magic happens if(matrix[x][y]==1){ checked[x][y]="1"; if(x-1>=0 && matrix[x-1][y]==1 && checked[x-1][y]!=1){ check(x-1,y,matrix); } if( y-1>=0 && matrix[x][y-1]==1 && checked[x][y-1]!=1){ check(x,y-1,matrix); } if(x+1<matrix.length && matrix[x+1][y]==1 && checked[x+1][y]!=1){ check(x+1,y,matrix); } if(y+1<matrix.length && matrix[x][y+1]==1 && checked[x][y+1]!=1){ check(x,y+1,matrix); } } return checked; } var startingMatrix = []; startingMatrix[0] = [1,2,3,4,5,6,7,1]; startingMatrix[1] = [1,1,3,4,1,6,1,1]; startingMatrix[2] = [1,1,1,1,1,1,7,1]; startingMatrix[3] = [5,1,1,1,5,1,7,1]; startingMatrix[4] = [5,2,3,4,1,1,7,1]; startingMatrix[5] = [1,2,1,4,5,1,1,1]; startingMatrix[6] = [1,1,1,1,1,1,0,1]; startingMatrix[7] = [1,1,3,4,4,1,3,1]; var checked=[]; //empty matrix for marking up checked files checked[0] = [0,0,0,0,0,0,0,0]; checked[1] = [0,0,0,0,0,0,0,0]; checked[2] = [0,0,0,0,0,0,0,0]; checked[3] = [0,0,0,0,0,0,0,0]; checked[4] = [0,0,0,0,0,0,0,0]; checked[5] = [0,0,0,0,0,0,0,0]; checked[6] = [0,0,0,0,0,0,0,0]; checked[7] = [0,0,0,0,0,0,0,0]; (function() { document.write("<br>"); findAdjacent(startingMatrix); })();
Everything seems to be working fine. But of course, there is some way to improve this code, right?