Треугольник Паскаля пошел не так

#javascript #pascals-triangle

#javascript #паскаль-треугольник

Вопрос:

Я пытаюсь создать треугольник Паскаля на JavaScript, но есть много ошибок. Я знаю, почему происходят ошибки, но они есть.

Код:

 function triangle() {
    this.rows = [[1]];
    this.genRow = function() {
        this.rows.push([]);
        this.rows[this.rows.length-1].push(1);
        for (var i = 0; i < this.rows[this.rows.length-1].length; i  ){
            var u = [this.rows[this.rows.length-1][i-1], this.rows[this.rows.length-1][i], this.rows[this.rows.length-1][i 1]];
            var f = function(e) {
                return e != undefined;
            };
            function s() {
                var sum=0;
                for (var index = 0; i < this.legnth; i  ){
                    sum =  this[i];
                }
                return sum;
            }
            u = u.filter(f).s();
            this.rows[this.rows.length-1].push(u);
        }
        this.rows[this.rows.length-1].push(1);
    }
}

var t = new triangle();
t.genRow();
console.log(t.rows);
  

Спасибо.

Ответ №1:

Пожалуйста, попробуйте этот код, чтобы треугольник Паскаля пошел не так

 #include <stdio.h> 
  
int binomialCoeff(int n, int k); 
  
void printPascal(int n) 
{ 
    for (int line = 0; line < n; line  ) 
    { 
        for (int i = 0; i <= line; i  ) 
            printf("%d ", 
                    binomialCoeff(line, i)); 
        printf("n"); 
    } 
} 
  
int binomialCoeff(int n, int k) 
{ 
    int res = 1; 
    if (k > n - k) 
    k = n - k; 
    for (int i = 0; i < k;   i) 
    { 
        res *= (n - i); 
        res /= (i   1); 
    } 
      
    return res; 
} 
  
int main() 
{ 
    int n = 7; 
    printPascal(n); 
    return 0; 
} 
  

Я надеюсь, что этот код будет полезен.

Спасибо.

Ответ №2:

 const pascalsTriangle = (rows = 1) => {
  let res = [];
  for (let i = 1; i <= rows; i  ) {
    if (i == 1) {
      res.push([1]);
    }
    else if (i == 2) {
      res.push([1, 1]);
    }
    else {
      let arr = [1];
      let lastArr = res[i - 2];
      for (let index=0; index<lastArr.length-1; index  ) {
        arr.push(lastArr[index]   lastArr[index   1]);
      }
      arr.push(1);
      res.push(arr);
    }
  }
  return res;
};
  

Это будет работать отлично. Вы можете сослаться на это здесь . https://github.com/omkarsk98/Exercism/blob/master/javascript/pascals-triangle/pascals-triangle.js

Ответ №3:

Вот подход в JS.

 function getNextLevel(previous) {
  const current = [1];
  for (let i = 1; i < previous.length; i  ) {
    current.push(previous[i]   previous[i - 1]);
  }
  current.push(1);
  return current;
}

function pascalTriangle(levels = 1) {
  let currentRow = [1];
  while (levels--) {
    console.log(currentRow.join(" "));
    currentRow = getNextLevel(currentRow);
  }
}

pascalTriangle(10);