Pythonの関数プログラミング機能を使ってwhileループを構築したいが、今までは失敗している。Functional Programming Python:1〜20の各数字で割り切れる最小の数字
私が達成したことは、1から20までの各数字で割り切れる最小の数を計算するコードの平和です。しかし、それは関数型プログラミング機能を多く使用しているように見えません。これは、これは多くの理由のための非functialで20
def byYmult(x, y): return x % y == 0
def first20div():
i=0
for y in range(1,20):
i += byYmult(x, y)
return i >= 20
def while_block():
global x
if first20div():
print(x)
return 1
else:
x += 1
return 0
x = 0
while_FP = lambda: ((not first20div()) and while_block()) or while_FP()
while_FP()
あなたは既に一度この質問をしました。しかし、エラーはそれ自身について語ります。反復するすべての要素に対して再帰を実行します。解決策は> 1Gです。スタックが増えています。グローバルを使用することは、実際にはほぼ確実に機能しないことに注意してください。関数型プログラミングは通常、* immutable *データで動作するためです。 –
@WillemVanOnsem私はあなたの答えを理解していません。再帰を実行して私が探している数を増やし、反復(forループ)は条件付き検査部分(つまり、再帰を止めなければならないかどうかを理解する)です。 –
どこに再帰がありますか? –