当前位置:首页 > JavaScript

js循环实现杨辉三角

2026-03-02 00:55:17JavaScript

实现杨辉三角的 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);

使用组合数公式

直接利用组合数公式计算杨辉三角的每个值,适用于数学场景。

js循环实现杨辉三角

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));

以上方法提供了多种实现杨辉三角的方式,可根据需求选择适合的方法。

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

相关文章

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似: func…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…

实现继承js

实现继承js

实现继承的方式 在JavaScript中,实现继承可以通过多种方式完成,每种方式都有其优缺点。以下是几种常见的实现继承的方法: 原型链继承 原型链继承是最基本的继承方式,通过将子类的原型指向父类的实…

js 实现日历

js 实现日历

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

js实现复制功能实现

js实现复制功能实现

使用document.execCommand方法(传统方式,已逐渐被弃用) 传统方式通过document.execCommand('copy')实现复制功能,需先选中文本。以下是一个完整示例: fu…