我正在写一个基本的boggle程序。我的递归方法如下:
function findWords(str, i, j) {
if (j<0 || i<0 || i>=4 || j>=4)
return;
if (marked[i][j])
return;
marked[i][j] = true;
str = str+Board[i][j];
document.write(str + " ");
if(str.length>4)
return;
if(isWord(str)==true)
document.write(str);
for (var ii = -1; ii<=1; ii++)
for (var jj = -1; jj<=1; jj++)
findWords(str, i+ii, j+jj);
marked[i][j] = false;
}
然而,它只经过一次。它停在 “如果(isWord(STR)==真) document.write(str);“。当我注释掉这部分代码时,该方法的工作方式几乎与预期一致。是否有理由让程序在此时停止?任何建议都值得赞赏。
答案 0 :(得分:1)
尝试按如下方式放置一些括号:
function findWords(str, i, j){
if(j<0 || i<0 || i>=4 || j>=4) return;
if (marked[i][j]) return;
marked[i][j] = true;
str = str+Board[i][j];
document.write(str + " ");
if(str.length>4) return;
if(isWord(str)==true)
{
document.write(str);
}
for(var ii = -1; ii<=1; ii++)
{
for (var jj = -1; jj<=1; jj++)
{
findWords(str, i+ii, j+jj);
}
}
marked[i][j] = false;
}