下面的 Hello 函数生成给定长度的二进制字符串,但有一个小问题 - 每个字符串都是以相反的顺序生成的(第二个数字是 100 而不是 001)。我一直在尝试使用 split-reverse-join 来解决这个问题。有什么想法吗?
document.write(generateBinaryStringsOfLength(3).join("<br>"));
function generateBinaryStringsOfLength(n) {
var arr = [];
populate_arr(n, "");
function populate_arr(n, str) {
if (str.length == n) {
//arr.push(str.split("").reverse().join(""));
arr.push(str);
} else {
populate_arr(n, "0" + str);
populate_arr(n, "1" + str);
}
}
return arr;
}
最佳答案
您只需颠倒在 populate_arr()
函数内传递 str
参数的顺序即可
这两行
populate_arr(n, "0" + str );
populate_arr(n, "1" + str );
应该是
populate_arr(n, str + "0");
populate_arr(n, str + "1");
document.write(generateBinaryStringsOfLength(3).join("<br>"));
function generateBinaryStringsOfLength(n) {
var arr = [];
populate_arr(n, "");
function populate_arr(n, str) {
if (str.length == n) {
//arr.push(str.split("").reverse().join(""));
arr.push(str);
} else {
populate_arr(n, str + "0");
populate_arr(n, str + "1");
}
}
return arr;
}
关于javascript - 使用递归按顺序生成二进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53313268/