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正在传递值5和。0该行if m%n==r:正在尝试除以 0 - 这是数学上的不可能。ZeroDivisionError这就是你例外的原因

编辑:

格式已关闭,所以我在第一次通过时错过了这个,但在r=int()您设置r为 0 的行中。这意味着该行将return gcd(m,n)==gcd(n,r)0 传递到gcd.

于 2012-05-29T20:32:28.213 回答
0

当 gcd() 调用自身时,未分配标量 r。该结果对于第二个参数为零。因此,随后的划分​​失败。

第二行应该是 'if m%n=r'

于 2012-05-29T20:39:45.243 回答