数か月前の冗談として、私の同僚は、次の指数アルゴリズムを使用してフィボナッチ数を計算することにより、「宇宙の熱死を加速する」ことを試みました。
int Fib(int n)
{
if (n <= 1)
return 1;
else
return Fib(n - 1) + Fib(n - 2);
}
これはC#でスタックオーバーフローを引き起こさないのですか? あきらめる前になんとか Fib(52) にたどり着きました (そして Fib(51) には何時間もかかりました)。CLR はデフォルトでスタックに 1M しか割り当てないため、これはスタック オーバーフローを引き起こすほどスタックを激しく叩くと思います。また、これは末尾再帰にも適していないと確信しています。