当前位置:首页 > JavaScript

js实现阶乘之和

2026-02-02 20:00:50JavaScript

实现阶乘之和的方法

阶乘之和是指从1到n的阶乘相加的结果。例如,n=3时,阶乘之和为1! + 2! + 3! = 1 + 2 + 6 = 9。以下是几种实现阶乘之和的JavaScript方法。

方法一:使用循环计算阶乘之和

通过循环计算每个数的阶乘,并将结果累加。

function factorialSum(n) {
    let sum = 0;
    let factorial = 1;

    for (let i = 1; i <= n; i++) {
        factorial *= i; // 计算当前数的阶乘
        sum += factorial; // 累加到总和中
    }

    return sum;
}

console.log(factorialSum(3)); // 输出: 9

说明:

  • 初始化sum为0,用于存储阶乘之和。
  • 初始化factorial为1,用于计算当前数的阶乘。
  • 通过循环从1到n,每次更新factorial的值并累加到sum中。

方法二:递归计算阶乘之和

使用递归函数计算阶乘,再通过循环累加阶乘结果。

function factorial(n) {
    if (n === 0 || n === 1) {
        return 1;
    }
    return n * factorial(n - 1);
}

function factorialSum(n) {
    let sum = 0;
    for (let i = 1; i <= n; i++) {
        sum += factorial(i);
    }
    return sum;
}

console.log(factorialSum(3)); // 输出: 9

说明:

  • factorial函数通过递归计算阶乘。
  • factorialSum函数通过循环调用factorial并累加结果。

方法三:使用数组的reduce方法

利用数组的reduce方法简化阶乘之和的计算。

function factorialSum(n) {
    return Array.from({ length: n }, (_, i) => i + 1)
        .reduce((sum, num) => {
            const factorial = Array.from({ length: num }, (_, i) => i + 1)
                .reduce((acc, val) => acc * val, 1);
            return sum + factorial;
        }, 0);
}

console.log(factorialSum(3)); // 输出: 9

说明:

  • 使用Array.from生成从1到n的数组。
  • 通过reduce方法计算每个数的阶乘并累加。

方法四:优化阶乘计算

在循环中复用前一个阶乘结果,减少重复计算。

function factorialSum(n) {
    let sum = 0;
    let factorial = 1;

    for (let i = 1; i <= n; i++) {
        factorial *= i;
        sum += factorial;
    }

    return sum;
}

console.log(factorialSum(3)); // 输出: 9

说明:

  • 与方法一类似,但更直观地展示了阶乘的复用逻辑。

方法五:使用ES6箭头函数和递归

结合箭头函数和递归实现简洁的阶乘之和计算。

const factorial = n => n <= 1 ? 1 : n * factorial(n - 1);
const factorialSum = n => n === 1 ? 1 : factorial(n) + factorialSum(n - 1);

console.log(factorialSum(3)); // 输出: 9

说明:

  • factorial函数通过箭头函数和递归计算阶乘。
  • factorialSum函数通过递归累加阶乘结果。

注意事项

  • 当n较大时(如n>20),阶乘结果会超出JavaScript的数字表示范围,导致精度丢失。可以使用BigInt处理大数。
  • 递归方法在n较大时可能导致栈溢出,建议使用循环方法。

js实现阶乘之和

标签: 阶乘之和
分享给朋友:

相关文章

php实现阶乘

php实现阶乘

实现阶乘的 PHP 方法 阶乘是指从1乘到该数的连续乘积,通常表示为 n!。以下是几种在 PHP 中实现阶乘的方法。 使用递归函数 递归是一种通过函数调用自身来解决问题的方法。以下是递归实现阶乘的…

php怎么实现阶乘

php怎么实现阶乘

实现阶乘的方法 在PHP中,可以通过多种方式实现阶乘计算。阶乘是指从1乘到指定的正整数n,通常表示为n!。以下是几种常见的实现方法: 使用递归函数 递归是一种函数调用自身的技术,适用于阶乘计算。…

js实现n的阶乘

js实现n的阶乘

递归方法实现阶乘 递归是计算阶乘最直观的方法,通过函数调用自身实现。 function factorial(n) { if (n === 0 || n === 1) {…

js 实现阶乘

js 实现阶乘

递归实现 递归是计算阶乘最直观的方法之一。递归函数会不断调用自身,直到达到基本情况(通常是 n === 0 或 n === 1)。 function factorialRecursive(n) {…

js实现阶乘

js实现阶乘

递归实现阶乘 递归是一种常见的阶乘实现方式,通过函数调用自身逐步分解问题。 function factorialRecursive(n) { if (n === 0 || n === 1)…

实现阶乘JS

实现阶乘JS

递归实现阶乘 递归是一种直接按照数学定义实现阶乘的方法。n的阶乘可以表示为n乘以(n-1)的阶乘,基础情况是0的阶乘为1。 function factorialRecursive(n) { i…