問題タブ [trampolines]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - トランポリンされたcpsバージョンのfib関数を高速化し、Pythonで相互再帰をサポートするには?
フィボナッチ関数の cps バージョンにトランポリンを実装しようとしました。しかし、高速化 (キャッシュを追加) して相互再帰をサポートすることはできません。
実装コード:
これが実行可能な例です。
数を実行するには遅すぎます40
。が大きい場合、取得fib
した最大再帰深度を超えました。n
しかし、追加後lru_cache
は高速になります。iter トランポリン バージョンは、再帰の深さに問題がなく、非常に高速に実行されます。
他の人の作品は次のとおりです。
- サポート cps バージョン キャッシュ: https://davywybiral.blogspot.com/2008/11/trampolining-for-recursion.html
- 相互再帰のサポート: https://github.com/0x65/trampolineしかし、理解するにはハックすぎます。