数日前、誰かが私に、再帰は繰り返しより優れていると言いました。可能であれば、常に使用するべきです。反復は繰り返しよりも悪いですか?
私は再帰を経験し、簡単なプログラムを書いて数の階乗を得ることを試みました。
def fact(n):
if n == 1:
return 1
return n * fact(n - 1)
と、これは正常に動作しますが、それはすぐにn
は、だから私は正確に同じことを簡単な関数を書きましたが、for loop
で997
上になるようRuntimeError: maximum recursion depth exceeded
を取得します。これは再帰です。
def fact(n):
a = 1
for x in range (0, n, 1):
a = a * (n - x)
return a
それは150msの中に答えを与えるn < 10000
ながら。
だから、おそらく再帰は少ない数値で速くなるが、そうではない。それは長い時間がかかる:
だから私の質問は次のとおりです。
Pythonでプログラムを書くときに、再帰を使用するには、まったく理由がありますか?
と:
再帰でしか解決できない問題はありますか?
@stackoverflow.com/a/13592002/98057(Pythonの末尾再帰のコンテキストについて) –
@AndréLaszloは、再帰でしか解決できない問題があれば質問に答えません。 –
すべての再帰アルゴリズムを繰り返し書き直すことができます。http://stackoverflow.com/questions/931762/can-every-recursion-be-converted-into-iterationしかし、再帰的に書くことの方がずっと簡単です。 –