编写程序,使用for循环计算和打印数字的超阶乘。数字的阶乘是所有整数的乘积,包括该数字,所以阶乘4(写成4!)是4 * 3 * 2 * 1 = 24。
超级因子是所有因子的产物,包括该因子。
4 !! = 4!* 3!×2!* 1!
我使用以下代码找到了“factorial”:
var upload = multer({
storage: s3({
dirname: '/',
bucket: 'bucket',
secretAccessKey: 'key',
accessKeyId: 'key',
region: 'us-west-2',
filename: function (req, file, cb) {
cb(null, file.originalname);
}
})
});
app.post('/upload', upload.array('file'), function (req, res, next) {
res.send("Uploaded!");
});
答案 0 :(得分:1)
考虑4! = 4x3x2x1,你可以看到分解中有4个数字。一般来说,在n的分解中会有n个数字! (n(n-1)(n-2)....(n-(n-1))。所以你需要做的就是得到超级因子,取分解中每个分量的阶乘。
伪代码看起来像这样
sp = 0
for i = n to 1:
sp = sp * factorial(i)
end for
return sp
答案 1 :(得分:0)
您的析法方法中最重要的一行是这一行:
output = output * i;
您将output
乘以i
,其中i
是一个不断增加1的整数。
超因子和正常因子之间有什么区别?要评估超因子,您将output
乘以i
而不是i
的阶乘,对吗?
所以就这样吧!我已经向你解释了整件事!只需创建一个名为superfactorial
的新方法,从factorial方法复制所有内容并更改此行:
output = output * i;
到此:
output = output * factorial(i);
答案 2 :(得分:0)
这是一种递归方法。 基本上,在阶乘中,你乘以n * fact(n-1)。在这里,我们做事实(n)* superFact(n-1)因为我们需要所有阶乘的乘积。
int superfactorial(int n) {
if (n == 0 || n == 1) {
return factorial(n);
} else {
return factorial(n) * superfactorial(n-1);
}
}
int factorial(int n) {
if(n == 0 || n == 1) {
return n;
} else {
return n * factorial(n-1);
}
}