js循环实现杨辉三角
实现杨辉三角的 JavaScript 方法
使用二维数组和双重循环
function generatePascalTriangle(numRows) {
const triangle = [];
for (let i = 0; i < numRows; i++) {
triangle[i] = new Array(i + 1);
triangle[i][0] = 1;
triangle[i][i] = 1;
for (let j = 1; j < i; j++) {
triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
}
}
return triangle;
}
console.log(generatePascalTriangle(5));
优化空间复杂度的方法
function generatePascalTriangle(numRows) {
const result = [];
let prevRow = [];
for (let i = 0; i < numRows; i++) {
const currentRow = [];
currentRow[0] = 1;
currentRow[i] = 1;
for (let j = 1; j < i; j++) {
currentRow[j] = prevRow[j - 1] + prevRow[j];
}
result.push(currentRow);
prevRow = currentRow;
}
return result;
}
输出格式化的杨辉三角
function printPascalTriangle(numRows) {
const triangle = generatePascalTriangle(numRows);
const maxWidth = Math.max(...triangle[numRows - 1]).toString().length + 1;
triangle.forEach((row, i) => {
const padding = ' '.repeat((numRows - i - 1) * maxWidth / 2);
const rowStr = row.map(num =>
num.toString().padStart(maxWidth, ' ')
).join('');
console.log(padding + rowStr);
});
}
printPascalTriangle(5);
杨辉三角的数学原理
每个数字等于其上方左右两个数字之和,用公式表示为: [ C(n, k) = C(n-1, k-1) + C(n-1, k) ] 其中 ( C(n, k) ) 表示第 n 行第 k 个数字(从0开始计数)。
不同实现方式的比较
二维数组方法直观易理解,但空间复杂度为 O(n²)。优化方法使用前一行计算当前行,空间复杂度降为 O(n)。格式化输出时需要注意对齐问题,特别是处理多位数时的显示效果。







