我正在尝试获得N个正奇数的乘积
function multOdd(n) {
var mult = 1;
var counter=[];
for (var i = 1; i <= 2*n-1; i += 2){
counter.push(i);
}
console.log(counter);
return mult=mult*counter[i];
}
console.log(multOdd(10));
我将数字推到一个数组中,并试图从它们中获得乘积,但我无法使其正常工作。
答案 0 :(得分:2)
如果只想将结果作为n,请使用:
function multOdd(n) {
var result = 1;
for (var i = 1; i <= 2*n-1; i += 2){
result = result * i;
}
console.log(result);
return result;
}
console.log(multOdd(4));
如果您想要一个数组,该数组的索引由最多n个奇数的索引,则可以使用:
function multOdd(n) {
let result = 1;
let results = [];
for (let i = 1; i <= 2*n-1; i += 2){
result = result * i;
results[(i+1) / 2] = result;
}
console.log(results);
return results;
}
console.log(multOdd(10));
答案 1 :(得分:2)
返回mult=mult*counter[i]
时,您只返回一次乘法。它应该返回mult = 1 * counter[lastElement+2]
,这将是错误的。在您的情况下,计数器的最后一个元素是19,在退出循环i之前,值是i = 19 + 2 =21。您将返回mult = 1 * 21 = 21。
您可以改为通过for循环返回乘法值,而不需要数组:
function multOdd(n) {
var mult = 1;
for (var i = 1; i <= 2*n-1; i += 2){
mult = mult * i;
}
return mult;
}
答案 2 :(得分:1)
有几种方法可以得到数字数组的乘积。这是两个简单的方法: 相关MDN
album = (string)parsed.SelectToken("response.song.album.name");
答案 3 :(得分:1)
您可以将当前代码的两个步骤分为两个功能:
With PivFid
For i = 1 To .PivotItems.Count
If .PivotItems(i).Name <> Supply Then .PivotItems(i).Visible = False
Next i
End With
答案 4 :(得分:0)
let multOdd = (n) => {
let total = 1;
for (let i = 1; i<= 2*n; i+=2){
total *= i;
}
return total;
}
console.log(multOdd(10));
答案 5 :(得分:0)
对于递归n的前n个正整数,我们应该使用标准的数学公式代替
对于此乳胶图像,我使用了https://codecogs.com/latex/eqneditor.php。事实是
n! = n(n-1)(n-2)(n-3) ... and so on
因此,我们可以使用Array(n).fill()
来获取10个元素的数组,并将它们减少以得到阶乘。
Array(n).fill().reduce((v,_,i) => (i+1) * v || 2)
然后,将其除以2乘以n!
的n倍。这就是我们想要的。这样做的好处是,这使您的解决方案成为一体式
let n = 10;
let answer = Array(2*n).fill().reduce((v,_,i) => (i+1) * v || 2) / (Math.pow(2,n) * Array(n).fill().reduce((v,_,i) => (i+1) * v || 2));
console.log(answer)