怎么用js写出阶乘程序

时间:2025-01-27 02:15:24 单机游戏

方法一:非递归写法

```javascript

function f(n) {

if (0 === n) {

return 1;

}

let res = 1;

for (let i = 1; i <= n; ++i) {

res *= i;

}

return res;

}

```

方法二:递归写法

```javascript

function g(n) {

if (0 === n) {

return 1;

}

return n * g(n - 1);

}

```

方法三:动态规划写法

```javascript

let dp = [];

function h(n) {

if (n < 0 || n !== Math.floor(n)) {

return undefined;

}

if (dp[n]) {

return dp[n];

}

if (0 === n) {

dp[n] = 1;

return 1;

}

for (let i = dp.length; i <= n; ++i) {

dp[i] = dp[i - 1] * i;

}

return dp[n];

}

```

示例

你可以使用以下代码来测试这些函数:

```javascript

console.log(f(5)); // 输出: 120

console.log(g(5)); // 输出: 120

console.log(h(5)); // 输出: 120

```

这些方法各有优缺点,非递归写法性能较好,递归写法代码简洁,动态规划写法适用于需要多次计算阶乘的情况。你可以根据具体需求选择合适的方法。