01/10/2018, 01:09

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;
    >     }
    > }
Zhang Jike viết 03:17 ngày 01/10/2018

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

明玉 viết 03:15 ngày 01/10/2018

Ý 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));
Zhang Jike viết 03:11 ngày 01/10/2018

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

Bài liên quan
0