2016-11-26 5 views
0

私は文が実行されたら、whileループの内側NUM1とNUM1の値が同じままときユークリッドのアルゴリズム私は変数を交換した後、彼らはそれに戻るには、(元の値

def gcd(num1, num2): 
    if num2 > num1: 
     num1, num2 = num2, num1 
    while num1 % num2 != 0: 
     num1 %= num2 
     gcd(num1, num2) 
return num2 

を実装しようとしていますなどがありDo not if statement)

num1を常にnum2より大きくしたいが、if文がないのでコードを実行する。どうして ?

+0

なぜあなたは関数呼び出しを入れ子にしていますか? –

+0

ユークリッドのアルゴリズムですが、whileループの中でnum1%num2 == 0になるまでプロシージャを作りたい0 – Maysara

+0

関数呼び出しのネストは何ですか? –

答えて

0

これには2つの方法があります。whileループと再帰的です。あなたはそれらを混ぜ合わせたように見えます。 しばらくのバージョンは次のようになります。

def gcd(a,b): 
    while b: 
     a,b = b, a % b 
    return a 

再帰バージョンはこのようなものになるだろう:あなたが関数内で関数を呼び出す場合は、あなたがそこにあることを確認する必要がありますことを

def gcd(a,b): 
    if b == 0: 
     return a 
    else: 
     return gcd(b, a % b) 

は注意b == 0のような終了条件と、関数呼び出しを返すことを指定します。あなたのネストされた関数呼び出しの結果が外部関数呼び出しに戻されていないため、あなたのケースで何も起こっていない理由があります。

関連する問題