为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕码人8056858 2022-09-22 16:03:18
由于相同的代码在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 functionvar dataArrTemp = new Array(3);ZeroOneGen(dataArrTemp, 3, 0);输出: 000 001我希望它继续并打印其他组合。它停在001。
查看完整描述

1 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

你需要声明,因为如果没有,你会得到全局变量,这会破坏递归函数的迭代。iz

为了防止这种情况并出现错误,您可以在代码开头添加“严格模式”

请查看该链接,因为它也会更改其他一些部分。

function ZeroOneGen(dataArr, digits, index) {

    var i, z;

    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);

    }

}


var dataArrTemp = new Array(3);

ZeroOneGen(dataArrTemp, 3, 0);


查看完整回答
反对 回复 2022-09-22
  • 1 回答
  • 0 关注
  • 52 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信