如何制作Javascript阶乘函数?
我想用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。请尝试以下操作
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”是“函数作用域”,这里是“欢迎阅读”,请您考虑写一些解释,而不是仅仅在答案中倾倒一堆代码。要解决这个问题,而不是仅仅提供一个盲目的解决方案。