private void RecurseSolveBoard(Board myBoard, int start) { if (!myBoard.BoardValid()) { myBoard = null; return; } myBoard.PrintBoard(); Console.WriteLine(); if (myBoard.BoardSolved()) { boardArr = myBoard.boardArr; return; } for (int i = start; i < 81; i++) { if (myBoard.boardArr[i] == 0) { for (int j = 1; j < 10; j++) { Board newBoard = new Board((int[])myBoard.boardArr.Clone()); newBoard.boardArr[i] = j; RecurseSolveBoard(newBoard, i); } break; } } }