我需要帮助创建代码才能找到数字的阶乘。任务是
伪代码是
limit(endExclusive)
我的代码不完整,因为我对伪代码感到困惑。
while(factorial)
if factorial == 0 or factorial == 1
break
result => result * factorial
factorial => factorial - 1
答案 0 :(得分:3)
首先让我们检查一下出了什么问题:
var a = 1
什么是a
?它绝对不是变量的好名字。也许将其命名为result
?这同样适用于nth
,factorial
应该命名为nth_fact
和factorize
,而应该是;
或者......您还应始终使用while(nth_fact)
来结束陈述。
if
由于你的while循环包含多个语句({
和两个赋值),你需要在条件后立即使用nth_fact
打开一个块。 factorial
指的是函数,您更愿意在此处 if (nth_fact == 0 || nth_fact == 1){
break;
。
}
现在你打开一个if语句的块语句,但是你永远不会关闭它。因此,休息后你需要另一个result => result * nth_fact
nth_fact => nth - 1
console.log()
。
=>
=
是箭头函数表达式,但您需要赋值运算符console.log(result)
。你还需要将一些东西传递给console.log,例如 function factorize(factorial){
var result = 1;
while(factorial){
if (factorial == 0 || factorial == 1){
break;
}
// ?
factorial = factorial - 1;
console.log(result);
}
return result;
}
所有在一起:
<LinearLayout
...
android:background="@android:color/transparent"/>
答案 1 :(得分:1)
这个伪代码确实令人困惑,因为它所谓的factorial
实际上不是因子 - 它是当前值,结果(实际上是我们正在寻找的因子) )乘以。此外,if
是多余的,因为while
已经检查了相同的条件。所以正确的伪代码将是
currentValue = argument
factorial = 1
while (currentValue > 1)
factorial = factorial * currentValue
currentValue = currentValue - 1
// now, 'factorial' is the factorial of the 'argument'
一旦你解决了这个问题,这里有一个奖金分配:
range(a, b)
,用于创建从a
到b
的数字数组。例如,range(5, 8) => [5, 6, 7, 8]
product(array)
,它将数组元素相互重叠。例如,product([2, 3, 7]) => 42
product
和range
答案 2 :(得分:0)
function factorial(num) {
var result = 1
while (num) {
if ((num) == 0 || (num) == 1) {
break;
} else {
result = result * num;
num = num - 1;
}
}
return `The factorial of ${val} is ${result}`
}
let val = prompt("Please Enter the number : ", "0");
var x = parseInt(val);
console.log(factorial(x));
答案 3 :(得分:-2)
你使用了正确的方法。只是语法错了。这是:
function nth_fact(nth){
var result = 1 ;
while(nth){
if ((nth) == 0 || (nth) == 1)
break ;
result = result * nth;
nth = nth - 1
}
console.log(result);
return result;
}