// 尾遞歸方式function factorial1(n,total) { if (n === 1) { return total;
} return factorial1(n - 1, n * total);
}// 普通遞歸方式function factorial2(n) { if (n === 1) { return 1;
} return n * factorial2(n - 1);
}console.log(factorial1(25,1)); // 1.5511210043330984e+25 console.log(factorial2(25)); // 1.5511210043330986e+25當n的值比較大的時候比如25, 結果就開始異常, 使用非尾遞歸的方式計算出的結果才是正確的.這是哪里出了問題?
JS階乘尾遞歸結果異常怎么處理?
當年話下
2018-07-12 15:10:32