Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.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 - Fatal编程技术网

如何制作Javascript阶乘函数?

如何制作Javascript阶乘函数?,javascript,Javascript,我想用javascript编写一个阶乘函数。我尝试了以下方法: function factorial(n){ if(n==1){ return 1; } else { while(n>=0){ n = n * (n-1); } return n; } } 它不工作。您使用了while(n>=0)而不是while(n>=2)。使用n>=0将使while循环的结尾乘以n。您还应该使用==运算符来防止非数字值。您还忘记了在循环中减少n。请尝试以下操作

我想用javascript编写一个阶乘函数。我尝试了以下方法:

function factorial(n){
  if(n==1){
    return 1;
  } else {
   while(n>=0){
    n = n * (n-1);
   }
   return n;
 }
}
它不工作。

您使用了
while(n>=0)
而不是
while(n>=2)
。使用
n>=0
将使while循环的结尾乘以
n
。您还应该使用
==
运算符来防止非数字值。您还忘记了在
循环中减少
n
。请尝试以下操作之一:

function factorial(n){
  if(n==1){
    return 1;
  } else {
   while(n>=0){
    n = n * (n-1);
   }
   return n;
 }
}
迭代法:

function factorial(n){
 var result = n;
 if(n<0){
   return null;
 }
 if(n===1||n===0){
return 1;
 } else {
 while(n>=2){
 result = result * (n-1); 
 n--;
}
return result;
}
}
函数阶乘(n){
var结果=n;
如果(n=2){
结果=结果*(n-1);
n--;
}
返回结果;
}
}

函数阶乘(n){
var结果=n;
如果(n=2){
结果=结果*(n-1);
n--;
}
返回结果;
}
}
函数计算(){
var输入=document.getElementById(“number”).value;
如果(!isNaN(输入)&&input.trim().length){
document.getElementById(“结果”).innerHTML=factorial(parseInt(input,10));
}否则{
document.getElementById(“结果”).innerHTML=“输入必须是一个数字!”;
}
}

您使用了
while(n>=0)
而不是
while(n>=2)
。使用
n>=0
将使while循环的结尾乘以
n
。您还应该使用
==
运算符来防止非数字值。您还忘记了在
循环中减少
n
。请尝试以下操作之一:

function factorial(n){
  if(n==1){
    return 1;
  } else {
   while(n>=0){
    n = n * (n-1);
   }
   return n;
 }
}
迭代法:

function factorial(n){
 var result = n;
 if(n<0){
   return null;
 }
 if(n===1||n===0){
return 1;
 } else {
 while(n>=2){
 result = result * (n-1); 
 n--;
}
return result;
}
}
函数阶乘(n){
var结果=n;
如果(n=2){
结果=结果*(n-1);
n--;
}
返回结果;
}
}

函数阶乘(n){
var结果=n;
如果(n=2){
结果=结果*(n-1);
n--;
}
返回结果;
}
}
函数计算(){
var输入=document.getElementById(“number”).value;
如果(!isNaN(输入)&&input.trim().length){
document.getElementById(“结果”).innerHTML=factorial(parseInt(input,10));
}否则{
document.getElementById(“结果”).innerHTML=“输入必须是一个数字!”;
}
}


首先为数字0和1输入数字返回1。如果数字大于1,则从2迭代到输入数字和多个
结果*i存储到结果变量中

function factorial(number) {
  let result = 1;

  for (let i = 2; i <= number; i++) {
    result = result * i;
  }

  return result;
}
函数阶乘(数){
设结果=1;

对于(设i=2;i首先为数字0和1输入数字返回1。如果数字大于1,则从2迭代到输入数字,并将多个
result*i;
存储到结果变量中

function factorial(number) {
  let result = 1;

  for (let i = 2; i <= number; i++) {
    result = result * i;
  }

  return result;
}
函数阶乘(数){
设结果=1;

对于(让i=2;i这是我在了解数组函数reduce()后编写的一个函数)

const factorial=n=>{
如果(!Number.isInteger(n))返回未定义
如果(n<0)返回未定义
如果(n==0)返回1
常量数组1=[…数组(n+1).keys()]拼接(1)
返回数组1.reduce((preVal,curVal)=>preVal*curVal)
}

这是我在了解数组函数reduce()后写的一篇文章

const factorial=n=>{
如果(!Number.isInteger(n))返回未定义
如果(n<0)返回未定义
如果(n==0)返回1
常量数组1=[…数组(n+1).keys()]拼接(1)
返回数组1.reduce((preVal,curVal)=>preVal*curVal)
}

我们可以通过以下方式完成:

const factorial = (num: number): number => (num === 0) ? 1 : (num * factorial(num - 1));

我们可以通过以下方式进行:

const factorial = (num: number): number => (num === 0) ? 1 : (num * factorial(num - 1));
就像我今天做的这个练习一样,只是在答案中添加了一点。in表示0!=1和1!=1,所以只需要额外的“确保”

正如我所说,我没有任何优点,正如我正在学习的,但是有任何可能的方法来确保在我们的if,else if,while…或任何其他意义上,我们选择做阶乘,我们把0和1与它们自己的唯一值放在一起。
我的答案中的所有优点(与H R Progr无关,应该转到who的精彩文章中,给我一些提示。
这是我读了她的文章后的原始代码:

const factorial = (n) => (n < 0) ? 1 : (n == 0) ? 1 : (n * factorial(n - 1));
const阶乘=(n)=>(n<0)?1:(n==0)?1:(n*阶乘(n-1));
就像我今天做的这个练习一样,只是在答案中添加了一点。in表示0!=1和1!=1,所以只需要额外的“确保”

正如我所说,我没有任何优点,正如我正在学习的,但是有任何可能的方法来确保在我们的if,else if,while…或任何其他意义上,我们选择做阶乘,我们把0和1与它们自己的唯一值放在一起。
我的答案中的所有优点(与H R Progr无关,应该转到who的精彩文章中,给我一些提示。
这是我读了她的文章后的原始代码:

const factorial = (n) => (n < 0) ? 1 : (n == 0) ? 1 : (n * factorial(n - 1));
const阶乘=(n)=>(n<0)?1:(n==0)?1:(n*阶乘(n-1));

所以下面的代码就是这样工作的。 const获取要打印到的html文档的一部分。 提示符接收测试的编号。 乐趣从阶乘计算循环开始。 循环通过并继续将数字乘以其阶乘。 如果输入8,循环在完成所有传递后将返回40320

const html = document.getElementById('root');

// get number
let num1;
do {
    num1 = +prompt("enter number");
}
while (num1 <= 0);

//// factorial calculation using loop

let j = 1;
for (let i = 1; i <= num1; i++) {
    j = j * i;

    //show results on the screen

    html.innerHTML = `
    <p> ${j}</p>
    `;
}
consthtml=document.getElementById('root');
//得到号码
让num1;
做{
num1=+提示(“输入数字”);
}

而(num1),下面的代码就是这样工作的。 const获取要打印到的html文档的一部分。 提示符接收测试的编号。 乐趣从阶乘计算循环开始。 循环通过并继续将数字乘以其阶乘。 如果输入8,循环在完成所有传递后将返回40320

const html = document.getElementById('root');

// get number
let num1;
do {
    num1 = +prompt("enter number");
}
while (num1 <= 0);

//// factorial calculation using loop

let j = 1;
for (let i = 1; i <= num1; i++) {
    j = j * i;

    //show results on the screen

    html.innerHTML = `
    <p> ${j}</p>
    `;
}
consthtml=document.getElementById('root');
//得到号码
让num1;
做{
num1=+提示(“输入数字”);
}

虽然(NUM1)为什么使用“让”而不是“var”?“是块作用域”,“var”是“函数范围”,这里是“为什么使用”而不是“var”?“是块作用域”,“var”是“函数作用域”,这里是“欢迎阅读”,请您考虑写一些解释,而不是仅仅在答案中倾倒一堆代码。要解决这个问题,而不是仅仅提供一个盲目的解决方案。