0
>>> def gcd(m,n):
        if m%n==r and n !=0 and r !=0:
            return gcd(m,n)==gcd(n,r)
        elif n==0 or r==0:
            return gcd(m,0)==1
        else:
            print None

gcd(5,6)

Traceback (most recent call last):
File "<pyshell#35>", line 1, in <module>
gcd(5,6)
File "<pyshell#34>", line 5, in gcd
return gcd(m,0)==1
File "<pyshell#34>", line 2, in gcd
if m%n==r and n !=0 and r !=0:
ZeroDivisionError: integer division or modulo by zero

申し訳ありませんが、別のバージョンに変更しましたが、それでも同様のエラー メッセージが表示されます... ありがとうございます。

4

2 に答える 2

3

この質問を投稿gcd(5,0)するときに、貼り付けたコードを から に変更したと思われます。gcd(5,6)

エラーメッセージに示されているように、への呼び出しは値とgcdを渡しています。行は 0 による除算を実行しようとしています - 数学的に不可能です。それがあなたの例外の理由です50if m%n==r:ZeroDivisionError

編集:

フォーマットがオフになっているので、最初のパスでこれを見逃しましたが、行で0r=int()に設定rしています。つまり、この行return gcd(m,n)==gcd(n,r)は 0 を に渡していgcdます。

于 2012-05-29T20:32:28.213 に答える
0

gcd()がそれ自体を呼び出すとき、スカラーrは割り当てられません。この結果は、2番目のパラメーターではゼロです。したがって、後続の除算は失敗します。

2行目はおそらく'ifm%n = r'

于 2012-05-29T20:39:45.243 に答える