因为大整数阶乘的结果超出了导致js数值类型溢出,因此考虑用字符串保存结果来计算,方案如下:
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script src="js/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
function f(n) {
var a = [1];
for (var i = 1; i <= n; i++) {
for (var j = 0, c = 0; j < a.length || c != 0; j++) {
var m = (j < a.length) ? (i * a[j] + c) : c;
a[j] = m % 10;
c = (m - a[j]) / 10;
}
}
return a.reverse().join("");
}
console.log(f(1000));
</script>
</body>
</html>