Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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
FirstFactorialJavaScript—为什么我会收到未定义的输出?_Javascript - Fatal编程技术网

FirstFactorialJavaScript—为什么我会收到未定义的输出?

FirstFactorialJavaScript—为什么我会收到未定义的输出?,javascript,Javascript,我目前正在学习JavaScript,因此我尝试编写一段 将计算并输出数字1-18的第一个阶乘 这是我的密码: 函数FirstFactorial(num){ x=num; y=1; n=0; 而(num>0&&y>0){ 如果(x==0){ 控制台日志(y); } x-=1; y=num*x; n+=y; } 返回第一阶乘; } var x=17; 第一阶乘(x); 而(x>1){ x-=1; 第一阶乘(x); }我不确定您想做什么,但这里有一个获取阶乘的函数: function factori

我目前正在学习JavaScript,因此我尝试编写一段 将计算并输出数字1-18的第一个阶乘

这是我的密码:

函数FirstFactorial(num){
x=num;
y=1;
n=0;
而(num>0&&y>0){
如果(x==0){
控制台日志(y);
}
x-=1;
y=num*x;
n+=y;
}
返回第一阶乘;
}
var x=17;
第一阶乘(x);
而(x>1){
x-=1;
第一阶乘(x);

}
我不确定您想做什么,但这里有一个获取阶乘的函数:

function factorial(num) {
// create a value, that will hold the end result
var returnValue = 1;
for(var i = num; i > 0; i++) {
// decrement i a required amount of time and multiply returnValue by i
returnValue *= i;
}

return returnValue;
}
这一个也有效:

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()
}
函数在自身内部调用自身。。。所以我们将进入一个无止境的循环。但是,我们也可以出于自己的目的使用循环

在阶乘代码中,我们将向下循环。从最高数字到最低数字,直到0

如果我们想找到3的阶乘,这将是: 阶乘(3)=3*阶乘(2)=3*2*阶乘(1)=3*2*1*阶乘(0)=3*2*1*1

var x = num*factorial(num-1);
这是生成循环的代码。我们正在调用相同的函数,但num已递减(num-1)


如果(num-1)等于零,则循环停止,因为我们返回一个值,并且不再调用该函数。如果不为零,我们将使用更低的值调用函数。

如果您尝试使用以下代码打印值

函数FirstFactorial(num){
console.log(num)
var x=num;
变量y=1;
var n=0;
console.log(x,y,n)
而(num>0&&y>0){
console.log(x,y,n)
如果(x==0){
控制台日志(y);
}
x-=1;
y=num*x;
n+=y;
}       
}

FirstFactorial(5)
至少您需要再次调用带有参数的函数。我看不到任何输出。您需要console.log()它或其他东西来查看。顺便问一下,你在哪里输出值?为什么要返回函数本身???@manishkumar我已经将console.log放在function@melpomene如果您在编译器上运行它,它会给出这个结果“=>undefined”我试图用console.logs编辑它,但没有返回它,它给出了一个错误,我应该保持它不变吗?是的,在第二个阶乘代码中需要返回。但是,您可以同时拥有console.log()和return。我想我的最后一个例子应该可以正常工作。嗨,伙计,这是有效的,但是我想问你一个问题。我试着理解一些代码,大部分代码都是直截了当的,但我不明白它是如何继续的,有循环吗?如果你能告诉我你在每一行(评论)上都做了什么,我想我们讨论的是最后一个例子,是的。谢谢