//递归
function fact(n){
if(n === 0 || n===1) return 1
return n * fact(n-1)
}
//迭代
function fact1(n){
let result =1;
for(let i =2;i<=n;i++){
result *= i
}
return result
}
//尾递归
function fact2(n, total=1){
if(n===0 || n===1) return total;
return fact2(n-1,n*total)
}
console.log(fact1(5))