我使用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);
答案 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