当前位置:首页 > JavaScript

js循环实现杨辉三角

2026-04-05 01:45:00JavaScript

使用JavaScript实现杨辉三角

杨辉三角是一个经典的数学图形,可以通过二维数组或嵌套循环实现。以下是几种常见的方法:

基础循环实现

通过双重循环构建二维数组,外层循环控制行数,内层循环计算每行的数值:

function generatePascalTriangle(numRows) {
  const triangle = [];
  for (let row = 0; row < numRows; row++) {
    triangle[row] = [];
    triangle[row][0] = 1; // 每行首尾为1
    for (let col = 1; col < row; col++) {
      triangle[row][col] = triangle[row-1][col-1] + triangle[row-1][col];
    }
    if (row > 0) triangle[row][row] = 1; // 每行末尾为1
  }
  return triangle;
}
console.log(generatePascalTriangle(5));

优化空间复杂度

利用前一行计算当前行,减少空间占用:

function pascalTriangle(n) {
  let result = [];
  let prev = [1];
  for (let i = 1; i <= n; i++) {
    let curr = [1];
    for (let j = 1; j < i; j++) {
      curr[j] = prev[j-1] + prev[j];
    }
    curr.push(1);
    result.push(prev);
    prev = curr;
  }
  return result;
}

格式化输出

将生成的数组格式化为三角形输出:

function printPascalTriangle(numRows) {
  const triangle = generatePascalTriangle(numRows);
  const maxWidth = Math.max(...triangle[triangle.length-1]).toString().length + 1;

  triangle.forEach(row => {
    let line = '';
    const padding = ' '.repeat((triangle.length - row.length) * maxWidth / 2);
    line += padding;
    row.forEach(num => {
      line += num.toString().padStart(maxWidth, ' ');
    });
    console.log(line);
  });
}
printPascalTriangle(6);

递归实现(非循环)

虽然题目要求循环实现,但递归方案可作为对比参考:

function pascalRecursive(row, col) {
  if (col === 0 || col === row) return 1;
  return pascalRecursive(row-1, col-1) + pascalRecursive(row-1, col);
}

function generateTriangleRecursive(rows) {
  const triangle = [];
  for (let i = 0; i < rows; i++) {
    triangle[i] = [];
    for (let j = 0; j <= i; j++) {
      triangle[i][j] = pascalRecursive(i, j);
    }
  }
  return triangle;
}

注意事项:

js循环实现杨辉三角

  • 基础实现的时间复杂度为O(n²),空间复杂度为O(n²)
  • 边界条件处理需确保每行首尾元素为1
  • 格式化输出时需考虑数字位数对齐

标签: 杨辉三角js
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…