Sinh dãy nhị phân Javascript?

Em có được đố 1 bài là liệt kê các dãy nhị phân n phần tử.
Thì em giải quyết như sau. Mặc dù em vẫn ra được output đúng nhưng em nghĩ có lẽ e code linh tinh rồi. A chị nào tối ưu giúp em theo phương pháp sinh (k hồi quy) được không. Em thao tác với mảng hơi bị bối rối :<
(e mới học js mong a chị giơ cao đánh khẽ) :<

var n=5;
var arr = [];
var i;
for (var i=1;i<=n;i++){
    arr[i] = 0;
}
while (true){
    console.log(arr.slice(1, max + 1);
    i = n;
    while (i>0&&arr[i]==1){
            i = i - 1;
    }
    if (i>0) {
        arr[i]=1;
        for (var j=i+1;j<=n;j++){
            arr[j]=0;
        }
    } else {
            break;
    }
}

:(( help me :(( please ;((

Ý tưởng: tạo một biến có giá trị 0, cộng dần nó lên đồng thời đổi sang nhị phân

var Dec2Bin = function(number, width)
{
  if (number === 0) return '0'.repeat(width);
  let rs = number.toString(2);
  return '0'.repeat(width - rs.length) + rs;
}
var Pow = function(base, n)
{
  if (n === 0) return 1;
  let rs = base;
  while (n !== 1)
  {
    rs *= base;
    n--;
  }
  return rs;
}
var GenerateBinarySequence = function(width)
{
  let rs = [];
  if (width === 0) return rs;
  let max = Pow(2, width);
  let t = 0;
  while (t !== max)
  {
    rs.push(Dec2Bin(t, width));
    t++;
  }
  return rs;
}
console.log(GenerateBinarySequence(3));
2 Likes

Cám ơn anh ạ. để em nghiên cứu làm thử :3

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?