>>719
再帰的な関数を作って深い再帰をするとRuntimeエラーが起こる
これを関数の最後に再帰部分が来るようにすると
コンパイラが自動的にループに変換して
Runtimeエラー起こさないようにするのが末尾再帰最適化

ただ末尾再帰にして可読性を落とすんなら
手動でループに変換しても可読性のメリットないし、って話