当前位置:首页 > JavaScript

js循环实现杨辉三角

2026-01-31 09:41:18JavaScript

实现杨辉三角的 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开始计数)。

js循环实现杨辉三角

不同实现方式的比较

二维数组方法直观易理解,但空间复杂度为 O(n²)。优化方法使用前一行计算当前行,空间复杂度降为 O(n)。格式化输出时需要注意对齐问题,特别是处理多位数时的显示效果。

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

相关文章

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

js 实现图片 放大

js 实现图片 放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性可以实现图片的平滑放大效果。结合 JavaScript 监听鼠标事件控制放大状态: con…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…