递归方法使用JavaScript无法正常工作

时间:2014-02-19 00:26:39

标签: javascript recursion

我正在写一个基本的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);“。当我注释掉这部分代码时,该方法的工作方式几乎与预期一致。是否有理由让程序在此时停止?任何建议都值得赞赏。

1 个答案:

答案 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;
}