1function solveSudoku(row, col) {
2 // 1: Base Case
3 if (row === 8 && col === 9) return true;
4
5 // 2: Check for next row
6 if (col === 9) { row++; col = 0; }
7
8 // 3: Skip filled cells
9 if (board[row][col] > 0) return solveSudoku(row, col + 1);
10
11 // 4: Try digits 1 to 9
12 for (let num = 1; num <= 9; num++) {
13 // 5: Is it safe?
14 if (isSafe(row, col, num)) {
15
16 // 6: Assign
17 board[row][col] = num;
18
19 // 7: Recur
20 if (solveSudoku(row, col + 1)) return true;
21 }
22 // 8: BACKTRACK
23 board[row][col] = 0;
24 }
25 // 9: No number worked
26 return false;
27}