OK、Pythonには末尾呼び出しの最適化がありません。
しかし、「ループする」よりも再帰的に考える方にとって、コードを書くためのベストプラクティスは何ですか?
多くの場合、1000回のスタック呼び出しで十分ですが、Pythonで効率的に再帰を隠すためのヒントは何ですか?
テール再帰アルゴリズムを書いているなら、おそらくこのようなことをしています
def my_algo(whatever)
if some_condition:
return foo
...
return my_algo(bar)
my_algo
の呼び出しは必ず最後に返す必要があるため、これを次のように簡単に変換できます。
def my_algo(whatever)
while some_condition:
...
whatever = bar
return whatever
これは実際、基本的に、ほとんどのコンパイラのテールコール最適化で発生します。