Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
阶乘javascript代码?_Javascript_Recursion_Factorial - Fatal编程技术网

阶乘javascript代码?

阶乘javascript代码?,javascript,recursion,factorial,Javascript,Recursion,Factorial,我使用for循环为JS中的factorial编写了这段代码,但它没有显示所需的输出 我的代码有什么问题 var solution; for (x = 12; x > 0; x -= 1) { for (y = 12; y > 0; y -= 1){ solution = y * x; } } console.log(solution); 当您重新定义它时,您没有使用解决方案,所以基本上您是在计算 solution = 1 * 1; 您的代码似乎与

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

我的代码有什么问题

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

当您重新定义它时,您没有使用
解决方案
,所以基本上您是在计算

solution = 1 * 1;

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

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。您需要保存上一个操作的结果


我建议你在以后的问题上遵循社区规则,我也不想阻止你加入这个社区,但请以后用谷歌搜索。

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

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

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

无论哪种方法,这两种方法都是寻找阶乘的基本方法,使用哪种方法并不重要

//迭代
var溶液=1,
数字=12,
x、 y;
对于(x=数量;x>0;x-=1){
解*=x;
} 
console.log(解决方案);
//递归的
函数事实(n){
如果(n==1)
返回1;
其他的
返回n*事实(n-1);
}
console.log(事实(数字))
var-fact=1;
函数阶乘(n){
对于(;n>1;n--){
事实*=n;
}
返回事实;
}

console.log(阶乘(8))您能解释一下您希望每个部分做什么吗?因为您每次迭代都会替换解决方案。。。。因此,当您在最后一次迭代中时,您将获得值……欢迎使用StackOverflow。虽然这段代码可以回答这个问题,但提供关于它如何和/或为什么解决问题的附加上下文将提高答案的长期价值。