我试图用一种不同的方式来给出一个数字的阶乘,例如:15! = 15*14/13+12-11*10/9...
等等。
我试着先创建一个数组,然后创建一个循环来得到结果。但是它没有像预期的那样工作。下面的代码预期的结果是13。
function createList(n) {
let input = n
let list = [input]
for(i = input-1; i >= 1; i--) {
list.push(i)
}
return list
}
function factorialDiff() {
let elements = createList(12)
var res = elements.shift()
while(elements.length >= 1) {
if(elements.length == 0) {
return res
}
res *= elements.shift()
if(elements.length == 0) {
return res
}
res /= elements.shift()
if(elements.length == 0) {
return res
}
res += elements.shift()
if(elements.length == 0) {
return res
}
res -= elements.shift()
if(elementos.length == 0) {
return res
}
}
return res
}
console.log(factorialDiff())
``
`
2条答案
按热度按时间bvn4nwqk1#
这是您的代码正在执行的操作:
console.log(((((12*11)/10+9-8)*7/6+5-4)*3)/2+1);
在数学中,惯例是先解乘/除,然后再解加/减。然而,你所做的代码是从左到右解这些运算。
例如:
如果您的预期行为是第一行,则以下函数应该可以解决您的问题:
qpgpyjmq2#
这就是你要找的吗?