haskell-jp / beginners #18 at 2021-11-17 11:50:05 +0900

再帰関数って再起しすぎると関数のスタックがオーバーフローしたりしないのでしょうか
一言で言うとします。(Haskell固有の詳しい回答はちゃんと説明できる自信がないので他の人にお願いしたい....)
f n = if n == 0 then 0 else f (n - 1) + 1 このような関数は、`+ 1` を計算するためにスタックを消費するのでスタックオーバーフローします。`f n = if n == 0 then 0 else f (n - 1)`` の場合はその必要がないのでオーバーフローを避けられます(末尾再帰)
なるほど、戻ってくる必要がないような再帰関数ならスタックを消費しないってことですね