SOURCE

//递归
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))
console 命令行工具 X clear

                    
>
console