function factorialIterative(number) { if (number < 0) return undefined let total = 1 for (let i = number; number > 0; number--) { total = total*number } return total } console.log(factorialIterative(5)) // 120
递归版本
1 2 3 4 5 6 7 8 9 10
function factorial(n) { console.trace() // 跟踪函数的执行栈 // 可以想象为当n=1时候,依次将之前的每一个值相乘 if (n === 1 || n === 0) { return 1 } return n * factorial(n-1) } console.log(factorial(5))