js循环实现杨辉三角
实现杨辉三角的 JavaScript 方法
使用双重循环
通过双重循环生成杨辉三角的每一行,外层循环控制行数,内层循环计算当前行的数值。
function generatePascalTriangle(numRows) {
const triangle = [];
for (let i = 0; i < numRows; i++) {
const row = [];
for (let j = 0; j <= i; j++) {
if (j === 0 || j === i) {
row.push(1);
} else {
row.push(triangle[i - 1][j - 1] + triangle[i - 1][j]);
}
}
triangle.push(row);
}
return triangle;
}
console.log(generatePascalTriangle(5));
使用递归
递归方法通过调用自身生成杨辉三角的每一行,直到达到指定行数。

function generatePascalTriangleRecursive(numRows) {
if (numRows === 0) return [];
if (numRows === 1) return [[1]];
const prevRows = generatePascalTriangleRecursive(numRows - 1);
const lastRow = prevRows[prevRows.length - 1];
const currentRow = [1];
for (let i = 1; i < lastRow.length; i++) {
currentRow.push(lastRow[i - 1] + lastRow[i]);
}
currentRow.push(1);
prevRows.push(currentRow);
return prevRows;
}
console.log(generatePascalTriangleRecursive(5));
优化空间复杂度
通过复用数组空间减少内存占用,仅使用一个数组存储当前行。

function generatePascalTriangleOptimized(numRows) {
const triangle = [];
let prevRow = [];
for (let i = 0; i < numRows; i++) {
const currentRow = [];
for (let j = 0; j <= i; j++) {
if (j === 0 || j === i) {
currentRow.push(1);
} else {
currentRow.push(prevRow[j - 1] + prevRow[j]);
}
}
triangle.push(currentRow);
prevRow = currentRow;
}
return triangle;
}
console.log(generatePascalTriangleOptimized(5));
格式化输出
将生成的杨辉三角格式化为字符串,便于在控制台显示为三角形。
function printPascalTriangle(numRows) {
const triangle = generatePascalTriangle(numRows);
const maxWidth = triangle[triangle.length - 1].join(' ').length;
triangle.forEach(row => {
const rowStr = row.join(' ');
const padding = ' '.repeat((maxWidth - rowStr.length) / 2);
console.log(padding + rowStr);
});
}
printPascalTriangle(5);
使用组合数公式
直接利用组合数公式计算杨辉三角的每个值,适用于数学场景。
function factorial(n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
function generatePascalTriangleCombination(numRows) {
const triangle = [];
for (let i = 0; i < numRows; i++) {
const row = [];
for (let j = 0; j <= i; j++) {
row.push(factorial(i) / (factorial(j) * factorial(i - j)));
}
triangle.push(row);
}
return triangle;
}
console.log(generatePascalTriangleCombination(5));
以上方法提供了多种实现杨辉三角的方式,可根据需求选择适合的方法。






