阶乘javascript代码?

时间:2017-07-14 23:45:29

标签: javascript recursion factorial

我使用for循环在JS中为sunial编写了这段代码,但它没有显示所需的输出。

我的代码出了什么问题?

var solution;
for (x = 12; x > 0; x -= 1) {
    for (y = 12; y > 0; y -= 1){
        solution = y * x; 
    }
} console.log(solution);

4 个答案:

答案 0 :(得分:0)

重新定义时,您没有使用solution,所以基本上是在计算

solution = 1 * 1;

您的代码似乎与阶乘或递归无关(需要函数定义)?

答案 1 :(得分:0)

12的阶乘是12 * 11 * 10 ... * 2 * 1.

要在循环中编写它,您可能希望将前一次迭代的结果乘以当前迭代的结果。

var solution = 1;
for (x = 12; x > 0; x -= 1) {
  solution = solution*x
} 
console.log(solution);

您的示例将以y结尾,x为1.因此输出1 * 1。您需要保存上一个操作的结果。

我建议您遵循社区规则以获取未来的问题,我也不想阻止您加入此社区,但请将来google。

答案 2 :(得分:0)

您的内部for循环不是必需的。您需要设置初始条件(即,将解决方案初始设置为1),然后将数字从12到1重复乘以该初始条件。

使用for循环称为“迭代”而不是递归。

要递归地执行此操作,您至少需要定义一个函数。学习如何递归思考确实是你应该谷歌的东西。

无论哪种方式,这两种方式对于寻找因子都是非常基本的,并且你使用它并不重要。

// Iterative
var solution = 1, 
    number = 12,
    x, y;
for (x = number; x > 0; x -= 1) {
    solution *= x; 
} 
console.log(solution);

// Recursive
function fact(n){
  if(n == 1)
    return 1;
   else
    return n * fact(n - 1);
}

console.log(fact(number))

答案 3 :(得分:-1)

PaymentIntent