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

使 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 function


var dataArrTemp = new Array(3);

ZeroOneGen(dataArrTemp, 3, 0);

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

查看完整描述

1 回答

?
红糖糍粑

TA贡献1517条经验 获得超4个赞

你需要声明,因为如果没有,你会得到全局变量,这会破坏递归函数的迭代。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

添加回答

举报

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