たまにエラーになる怖い再帰関数の例をループに変更すると、
// 再帰関数はループに書き換えることができる。
// 再帰関数の仮引数だったものをループ外部の変数にするなどして。
// ルーレット: 0-36の数字に賭けて当たれば36倍。
// 100万円を元手に1000円ずつ、ずっと5に賭ける。
let 総資金 = 1000000
let 賭け金 = 1000
let 数字 = 5
let 回数 = 0
while (総資金 > 賭け金 && 総資金 < 10000000) {
const 当たり番号 = Math.floor(Math.random() * 37)
総資金 = (当たり番号 === 数字) ? 総資金 + 賭け金 * 36 : 総資金 - 賭け金
console.log(総資金 + '円', 回数++ + '回目')
}
// 再帰と違ってコールスタックサイズの問題にならない。