>>966
JavaScript には、末尾再帰が無いのか?

末尾再帰すると、スタックに積まずに、
while loop の形に展開してくれる最適化

それか、スタックサイズを大きく設定するとか。
ただし、swap が起きて、すごく遅くなるかも