由于相同的代码在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个赞
你需要声明,因为如果没有,你会得到全局变量,这会破坏递归函数的迭代。i
z
为了防止这种情况并出现错误,您可以在代码开头添加“严格模式”
。
请查看该链接,因为它也会更改其他一些部分。
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);
添加回答
举报
0/150
提交
取消