約 8 億回呼び出す必要がある再帰関数 (C#) があります。これは明らかに通常、約 900 回目の呼び出しの後にスタック オーバーフローを引き起こします。私はこれを複数のループに追い出しましたが、再帰パターンは非常に簡単で、維持するのがきれいです。
私が読んで見たものから、スタックオーバーフローの問題を解決し、複数のネストされたループを修正する必要があるように、yコンビネーターを使用して再帰関数を実装することを検討しています。
y-combinator を使用した経験のある人はいますか? スタック オーバーフローでスタックすることはありますか?
階乗の簡単な例を見てみましょう。5,000 などより大きいほとんどの数値の階乗は、スタック オーバーフローを引き起こします。そのシナリオで y-combinator を適切に使用した場合、スタック オーバーフローは修正されますか?
実装するのは簡単ではないように見えるので、開発努力/リソースを y-combinator の実装と学習に費やす前に確認したいと思います。