FirstFactorial Javascript - 为什么我收到一个未定义的输出?

时间:2017-08-26 07:12:46

标签: javascript

我目前正在学习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'。谁知道为什么?

当我还在学习时,将非常感谢帮助。

2 个答案:

答案 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)等于零,则循环停止,因为我们返回一个值而不再调用该函数。如果它不为零,我们称该函数的值更低。