如题,我用递归计算PI的近似值:PI/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 + ···;
代码如下:
let calPI = (n, sum = 1)=> {
if(n < 3)
return sum*4;
n%4 === 1 ? sum += 1/n : sum -= 1/n;
return calPI(n-2, sum);
}
console.log(calPI(99999));
calPI(9999)
没有报栈溢出,请问我是哪里写错了吗?
到目前(2018年7月3日)为止,javascript 引擎除 Safari 浏览器外,其他主流浏览器,如谷歌(包括 v8、node.js)、火狐均未实现 TCO(Tail call optimization)。
你可以使用其他实现了 TCO 的语言来测试算法,例如 C 语言。
参考资料