使 1 和 0 的所有组合。代码在 java 中运行良好,但在 js 中则不然

由于相同的代码在Java中运行良好,因此不应该存在逻辑问题。它们完全相同。


公文代码:


public class ZeroOneGen {

  public static void ZeroOneGen(int[] dataArr, int digits, int index) {

    if (index == digits) {

      String str = "";

      for (int i = 0; i < digits; i++) {

        str = str + dataArr[i];

      }

      System.out.println(str);

      return;

    }


    for (int i = 0; i < 2; i++) {

      dataArr[index] = i;

      ZeroOneGen(dataArr, digits, index + 1);

    }


  }


  public static void main(String[] args) {

    int[] dataArrTemp = new int[3];

    ZeroOneGen(dataArrTemp, 3, 0);

  }

}

输出: 000 001 010 011 100 101 110 111


金文代码:


function ZeroOneGen(dataArr, digits, index) {

  if (index == digits) {

    var str = "";

    for (i = 0; i < digits; i++) {

      str = str + dataArr[i];

    }

    console.log(str);

    return;

  }


  for (z = 0; z < 2; z++) {

    dataArr[index] = z;

    ZeroOneGen(dataArr, digits, index + 1);

  }


} // end function


var dataArrTemp = new Array(3);

ZeroOneGen(dataArrTemp, 3, 0);

输出: 000 001
我希望它继续并打印其他组合。它停在001。

慕码人8056858
浏览 57回答 1
1回答

红糖糍粑

你需要声明,因为如果没有,你会得到全局变量,这会破坏递归函数的迭代。iz为了防止这种情况并出现错误,您可以在代码开头添加“严格模式”。请查看该链接,因为它也会更改其他一些部分。function ZeroOneGen(dataArr, digits, index) {&nbsp; &nbsp; var i, z;&nbsp; &nbsp; if (index == digits) {&nbsp; &nbsp; &nbsp; &nbsp; var str = "";&nbsp; &nbsp; &nbsp; &nbsp; for (i = 0; i < digits; i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; str = str + dataArr[i];&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; console.log(str)&nbsp; &nbsp; &nbsp; &nbsp; return;&nbsp; &nbsp; }&nbsp; &nbsp; for (z = 0; z < 2; z++) {&nbsp; &nbsp; &nbsp; &nbsp; dataArr[index] = z;&nbsp; &nbsp; &nbsp; &nbsp; ZeroOneGen(dataArr, digits, index + 1);&nbsp; &nbsp; }}var dataArrTemp = new Array(3);ZeroOneGen(dataArrTemp, 3, 0);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java