当前位置:首页 > 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));

使用递归

递归方法通过调用自身生成杨辉三角的每一行,直到达到指定行数。

js循环实现杨辉三角

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

优化空间复杂度

通过复用数组空间减少内存占用,仅使用一个数组存储当前行。

js循环实现杨辉三角

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

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

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

相关文章

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…