根据ES6兼容性表的说法,Safari具有尾部调用优化功能。尝试过了,它就像其他浏览器一样失败了。我是不是遗漏了什么?
function factorial(n, r = 1n) {
return (n <= 1) ? r : factorial(n - 1n, n * r)
}
console.log(factorial(36000n))
狩猎输出:
RangeError:超过了最大调用堆栈大小。
发布于 2021-02-12 03:43:36
您需要在严格模式下运行您的程序。
"use strict";
function factorial(n, r = 1n) {
return n <= 1n ? r : factorial(n - 1n, n * r);
}
console.log(factorial(36000n).toString());
要使函数调用被视为正确的尾调用,需要满足四个条件。
https://stackoverflow.com/questions/66164128
复制相似问题