我不想在node/es2015中使用尾调用优化,但我一直在努力RangeError: Maximum call stack size exceeded.所以我尝试了一个非常简单的测试功能:
function countTo(n, acc) {
if(n === 0) {
return acc;
}
return countTo(n - 1, acc + n);
}
console.log(countTo(100000 , 0))
Run Code Online (Sandbox Code Playgroud)
它仍然失败.我已经尝试'use strict';在函数体内添加并在文件的顶部.我尝试过使用--harmony和--harmony-tailcalls
相同的功能在球拍中按预期工作:
#lang racket
(define count-to
(lambda (n acc)
(cond
((= n 0) acc)
(else (count-to (- n 1) (+ acc n))))))
(count-to 100000000 0)
; ~> 5000000050000000
Run Code Online (Sandbox Code Playgroud)
"use strict";,或者--harmony或者--harmony-tailcalls