почему я не могу получить результат pascal три в дом - PullRequest
0 голосов
/ 12 января 2020

я пытаюсь выполнить упражнение tri pascal onclick, но результат все еще не определен, похоже, я не знаю, как я могу вызвать функцию.

        var call = function() {
            var numberOfRows = document.getElementById('Niveaux').value;;
            document.getElementById('result2').innerHTML = generate(numberOfRows);
            document.getElementById('result1').innerHTML = 'Triangle de pascal a '+numberOfRows+' Niveau';
        };

        var generate = function (numberOfRows) {
            //numberOfRows = document.getElementById('Niveau').value
            let triangle = [[1], [1,1]]
            if (numberOfRows === 0){
                return []
            }else if(numberOfRows == 1){
                return [[1]]
            }else if (numberOfRows == 2){
                return [[1], [1,1]]
            }else {
                for (var i = 2; i < numberOfRows; i++) {
                    addRow(triangle)
                }

            }

        };

        var addRow = function (triangle) {
            let previous = triangle[triangle.length - 1]
            let newRow = [1]
            for (var i = 0; i < previous.length - 1; i++) {
                let current = previous[i]
                let next = previous[i+1]
                newRow.push(current + next)
            }
            newRow.push(1)
            return triangle.push(newRow)
        }
  <p>Niveau tri de pascal : <input type="text" id="Niveaux" value="10"></p>
    <button onclick="call()">Calcules</button><hr>
    <h3 id="result1"></h3>
    <p id="result2"></p>

1 Ответ

0 голосов
/ 12 января 2020

почему я не могу получить результат pascal три в дом?

Потому что когда numberOfRows, введенный пользователем, больше, чем 2 i: e 3, 4, 5 et c, else выполняется часть

else {
   for (var i = 2; i < numberOfRows; i++) {
      addRow(triangle);
   }

}

Возвращаемое значение из функции addRow не используется. Вместо этого сохраните результат функции в переменной и затем верните его.

Примечание - triangle.push(newRow); -> pu sh функция возвращает новую длину массива.

function call() {
  var numberOfRows = document.getElementById('Niveaux').value;;
  document.getElementById('result2').innerHTML = generate(numberOfRows);
  document.getElementById('result1').innerHTML = 'Triangle de pascal a ' + numberOfRows + ' Niveau';
};

var generate = function(numberOfRows) {
  numberOfRows = +(document.getElementById('Niveaux').value);
  let triangle = [
    [1],
    [1, 1]
  ]
  if (numberOfRows === 0) {
    return [];
  } else if (numberOfRows == 1) {
    return [
      [1]
    ];
  } else if (numberOfRows == 2) {
    return [
      [1],
      [1, 1]
    ]
  } else {
    for (var i = 2; i < numberOfRows; i++) {
      result = addRow(triangle);
      return result;
    }
  }
  return numberOfRows;
};

var addRow = function(triangle) {
  let previous = triangle[triangle.length - 1];
  let newRow = [1];
  for (var i = 0; i < previous.length - 1; i++) {
    let current = previous[i];
    let next = previous[i + 1];
    newRow.push(current + next);
  }
  newRow.push(1);
  triangle.push(newRow);
  return triangle;
}
<p>Niveau tri de pascal : <input type="text" id="Niveaux" value="10"></p>
<button onclick="call()">Calcules</button>
<hr>
<h3 id="result1"></h3>
<p id="result2"></p>

- Правка -

function call() {
  var numberOfRows = document.getElementById('Niveaux').value;;
  generate(numberOfRows);
  document.getElementById('result1').innerHTML = 'Triangle de pascal a ' + numberOfRows + ' Niveau';
};

var generate = function(numberOfRows) {
  numberOfRows = +(document.getElementById('Niveaux').value);
  let triangle = [
    [1],
    [1, 1]
  ]
  if (numberOfRows === 0) {
    return [];
  } else if (numberOfRows == 1) {
    return [
      [1]
    ];
  } else if (numberOfRows == 2) {
    return [
      [1],
      [1, 1]
    ]
  } else {
    for (var i = 2; i < numberOfRows; i++) {
      addRow(triangle);
    }
  }
  printRow(triangle);
};

var addRow = function(triangle) {
  let previous = triangle[triangle.length - 1];
  let newRow = [1];
  for (var i = 0; i < previous.length - 1; i++) {
    let current = previous[i];
    let next = previous[i + 1];
    newRow.push(current + next);
  }
  newRow.push(1);
  triangle.push(newRow);
  return triangle;
}

const printRow = function(rows) {
  let pascalRow = "";
  for (let row of rows) {
    pascalRow += `${row.join(' ')} <br>`;
  }
  document.body.querySelector('#result2').innerHTML = pascalRow;
}
<p>Niveau tri de pascal : <input type="text" id="Niveaux" value="10"></p>
<button onclick="call()">Calcules</button>
<hr>
<h3 id="result1"></h3>
<p id="result2"></p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...