乘以N个正奇数

时间:2019-06-26 18:09:35

标签: javascript

我正在尝试获得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));

我将数字推到一个数组中,并试图从它们中获得乘积,但我无法使其正常工作。

6 个答案:

答案 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个正整数,我们应该使用标准的数学公式代替

the product of first n positive odd integers
也可以写成pi表示形式

enter image description here

对于此乳胶图像,我使用了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)