我目前正在学习JavaScript,所以我尝试制作一段代码 将计算并输出数字1-18的第一个阶乘。
这是我的代码:
function FirstFactorial(num) {
x = num ;
y = 1 ;
n = 0 ;
while (num > 0 && y > 0) {
if (x === 0) {
console.log(y) ;
}
x -= 1 ;
y = num * x ;
n += y ;
}
return FirstFactorial;
}
var x = 17 ;
FirstFactorial(x);
while (x > 1) {
x -= 1 ;
FirstFactorial(x);
}
当我尝试输出它时,它返回'undefined'。谁知道为什么?
当我还在学习时,将非常感谢帮助。
答案 0 :(得分:0)
如果您尝试使用以下代码打印值
function FirstFactorial(num) {
console.log(num)
var x = num ;
var y = 1 ;
var n = 0 ;
console.log(x,y,n)
while (num > 0 && y > 0) {
console.log(x,y,n)
if (x === 0) {
console.log(y) ;
}
x -= 1 ;
y = num * x ;
n += y ;
}
}
FirstFactorial(5)

它永远不会达到x = 0的条件。因为当x = 0时,y-0和while循环断开。这段代码几乎没用。如果你愿意,我可以为你增强代码......
查找阶乘的简单方法是通过递归
function fact(x) {
if(x==0) {
return 1;
}
return x * fact(x-1);
}
console.log(fact(10))

你可以提供断点来获得结果。
答案 1 :(得分:-1)
我不确定你要做什么,但这里有一个获得阶乘的功能:
function factorial(num) {
if (num == 0) {
return 1;
} else return num*factorial(num-1);
}
这个也有效:
function firstFactorial(num) {
if (num == 0) {
console.log(1)
return 1;
} else {
var x = num*factorial(num-1);
console.log(x);
return x;
}
要编写多个阶乘,只需添加另一个循环或使用此函数:
function a() {
a()
}
----最后一段代码是如何工作的
我猜你在理解代码的所有部分时没有任何问题。但它循环的方式是调用相同的函数。 看看这段代码:
var x = num*factorial(num-1);
该函数在自身内部调用...所以我们将进入无限循环。但是,我们也可以将循环用于我们的目的。
在阶乘代码中,我们将向下循环。从最高数字到最低数字直到0。
如果我们想要找到3的阶乘,这将是: 阶乘(3)= 3 *阶乘(2)= 3 * 2 *阶乘(1)= 3 * 2 * 1 *阶乘(0)= 3 * 2 * 1 * 1
{{1}}
这是制作循环的代码。我们调用相同的函数,但num减少了(num-1)。
如果(num-1)等于零,则循环停止,因为我们返回一个值而不再调用该函数。如果它不为零,我们称该函数的值更低。