実行時間を測定して、特にフィボナッチの 3 つの実装 (再帰、lru_cache、および線形 (線形空間を使用)) を比較して、いくつかの小さな実験を行いたいと思いました。無限再帰を作成する方法で誤って lru_ache バージョンを実装しました。
@lru_cache(None)
def fibo_cache(n):
return fibo_cache(n)
(本来は再帰版を再利用したかったのですが、再帰呼び出しにキャッシュが適用されないことがわかったので、これに変更しました)
これにより、プログラムはエラーやメッセージなしで単に停止しました。IDLE から起動した場合、RESTART: Shell
回線を作成して REPL に戻ります
lru_cacheのドキュメント ページには、スクリプトを停止するという記述はありませんでした。
これは意図した動作ですか、それともバグの可能性がありますか?
編集:
再帰制限を sys 経由で 500_000 に設定しました。ただし、例外はまだあると思います。ドキュメントによると
制限が高すぎるとクラッシュする可能性があるため、これは慎重に行う必要があります。
しかし、メッセージが届かないとは言いません。ただし、これは事実かもしれません。