阶乘乘以数字本身
Factorial multiplied by the number itself
除了递归求阶乘外,我们如何使用for循环解决?
function factorial(num){
for(var i=num;i>0;i--){
num*=i
}
return num;
}
factorial(3);
//18
答案应该是 6 但打印出 18
当我 运行 这段代码说任何数字 x 时,阶乘结果再次乘以 x。
阶乘(3) 给出 6*3...
factorial(5) 给出 120*5.What 可能是问题所在?谢谢
当你用 num 初始化 i 时,你乘以相同的数字两次,像这样使用 i=num-1:
function factorial(num){
for(var i=num-1;i>0;i--){
num*=i
}
return num;
}
factorial(3)
您已经有了 num 的值作为结果,您再次将它与这个值相乘。您可以使用下一个较小的值开始迭代,然后像您已经做的那样进行迭代。
function factorial(num) {
for (var i = num - 1; i > 0; i--) {
num *= i;
}
return num;
}
console.log(factorial(3));
使用 while
循环,并使用前缀递减进行更短的比较。
function factorial(num) {
var i = num;
while (--i) {
num *= i;
}
return num;
}
console.log(factorial(3));
您已将数字与自身相乘,不需要这样做。
只需要与小于给定数字的数字相乘即可得到阶乘。
下面是相同的代码片段:
function factorial(num){
for(var i=num-1;i>0;i--){
num*=i
}
return num;
}
factorial(3);
除了递归求阶乘外,我们如何使用for循环解决?
function factorial(num){
for(var i=num;i>0;i--){
num*=i
}
return num;
}
factorial(3);
//18
答案应该是 6 但打印出 18
当我 运行 这段代码说任何数字 x 时,阶乘结果再次乘以 x。 阶乘(3) 给出 6*3... factorial(5) 给出 120*5.What 可能是问题所在?谢谢
当你用 num 初始化 i 时,你乘以相同的数字两次,像这样使用 i=num-1:
function factorial(num){
for(var i=num-1;i>0;i--){
num*=i
}
return num;
}
factorial(3)
您已经有了 num 的值作为结果,您再次将它与这个值相乘。您可以使用下一个较小的值开始迭代,然后像您已经做的那样进行迭代。
function factorial(num) {
for (var i = num - 1; i > 0; i--) {
num *= i;
}
return num;
}
console.log(factorial(3));
使用 while
循环,并使用前缀递减进行更短的比较。
function factorial(num) {
var i = num;
while (--i) {
num *= i;
}
return num;
}
console.log(factorial(3));
您已将数字与自身相乘,不需要这样做。 只需要与小于给定数字的数字相乘即可得到阶乘。
下面是相同的代码片段:
function factorial(num){
for(var i=num-1;i>0;i--){
num*=i
}
return num;
}
factorial(3);