2016-10-07 7 views
4

Iにより均等に分割した整数値の可変範囲(1から20までの数字の全てで割り切れる最小の正の数は何ですか?)オイラープロジェクト5は、この解決策を見つけた:再帰関数で変数の初期値を手動で設定しないようにするにはどうすればよいですか?

def Euler5(start, end, counter): 
    x = counter 
    while start <= end: 
     if x%counter == x%start: 
      return Euler5(start+1, end, x) 
     else: 
      x += counter 
    return x 

しかし、カウンタを手動で最小の整数値(最初のcounter = startの値)に設定する必要があります。自動的にこれを行い、アルゴリズムを維持する方法はありますか?

答えて

3

あなたが理解していれば、最初の呼び出しでcounterを手動で指定せずに、最初の呼び出しではcounter == startとする必要があります。このため

、あなたはNoneのデフォルト値にcounterを設定し、関数の先頭でこれを確認し、このような場合には適切な値にcounterを設定することができます。

def Euler5(start, end, counter=None): 
    if counter is None: 
     counter = start 

    x = counter 
    while start <= end: 
     if x % counter == x % start: 
      return Euler5(start+1, end, x) 
     else: 
      x += counter 
    return x 
+0

ああ、あなたがしていますおそらく右 – Julius

+0

私はそれが本当に場合upvoteを感謝したいと思います。 ;) – dkasak

+1

そこに行く... – Julius

関連する問題