diff --git a/maths/pascalTriangle.js b/maths/pascalTriangle.js new file mode 100644 index 0000000000..bb0d468d2b --- /dev/null +++ b/maths/pascalTriangle.js @@ -0,0 +1,31 @@ +const numRows = 5 + +var generate = function (numRows) { + const triangle = [[1], [1, 1]] + + if (numRows === 0) { + return [] + } else if (numRows === 1) { + return [[1]] + } else if (numRows === 2) { + return [[1], [1, 1]] + } else { + for (let i = 2; i < numRows; i++) { + addRow(triangle) + } + } + return triangle +} +var addRow = function (triangle) { + const previous = triangle[triangle.length - 1] + const newRow = [1] + for (let i = 0; i < previous.length - 1; i++) { + const current = previous[i] + const next = previous[i + 1] + newRow.push(current + next) + } + newRow.push(1) + return triangle.push(newRow) +} + +generate(numRows)