gpt4 book ai didi

javascript - 如何制作一个返回数组中每个整数的阶乘的函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:01:01 25 4
gpt4 key购买 nike

我是编码新手,被问到这个我似乎无法正确回答的问题:

创建一个接受正整数数组并返回这些数字的阶乘数组的函数。

  E.g. [4, 3, 2] => [24, 6, 2]

一个数的阶乘是该数与其下方所有整数的乘积。

  E.g. the factorial of 4 is 4 * 3 * 2 * 1 = 24

如果数字小于0,则拒绝。

我创建的代码是这样的;

function getFactorials(nums) {
if (nums === 0 || nums === 1)
return 1;
for (var i = nums - 1; i >= 1; i--) {
nums *= i;
}
return nums;
}

正在针对此测试运行代码;

describe("getFactorials", () => {
it("returns [] when passed []", () => {
expect(getFactorials([])).to.eql([]);
});
it("returns one factorial", () => {
expect(getFactorials([3])).to.eql([6]);
});
it("returns multiple factorials", () => {
expect(getFactorials([3, 4, 5])).to.eql([6, 24, 120]);
});
it("returns largest factorials", () => {
expect(getFactorials([3, 8, 9, 10])).to.eql([6, 40320, 362880, 3628800]);
});
});

我应该怎么做?

最佳答案

首先,创建一个递归函数来计算单个数字的阶乘:

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

然后要对数组执行此操作,只需使用 Array.prototype.map()像这样:

function getFactorials(arr) {
var result = arr.map(x => factorial(x));
return result;
}

这是一个演示:

 

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

function getFactorials(arr) {
var result = arr.map(x => factorial(x));
return result;
}

console.log(getFactorials([4, 8, 10]));
console.log(getFactorials([]));
console.log(getFactorials([1, 2, 3, 4, 5]));

希望这对您有所帮助!

关于javascript - 如何制作一个返回数组中每个整数的阶乘的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53898962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com