1
我正在编写我自己的Rational类版本,我想递归地使用最大公约数。我需要考虑负数 - 虽然我总是想在分子中表示我的负数,尽管让我们说num = 1和denom = -2,我想要将它表示为num = -1和denom = 2并且如果num = -1和denom = -2,则num = 1和denom = 2。我知道我需要使用abs函数来查找gcd,但是如果我删除负号以找到gcd,我需要将它放回...这是我迄今为止的...负数的Python gcd
def gcd(a,b):
'''Greatest common divisor function
(a and b are integers)'''
if b==0:
return a
else:
return gcd(b,a%b)
class Rational:
def __init__(self,a=0,b=1):
'''Constructor for Rational'''
if b==0:
return 'Denominator cannot be zero.'
else:
g=gcd(abs((a,b))
self.n=a/g
self.d=b/g
# I need to 'undo' the abs to get my self.n and self.d-
if that makes sense!!
实际上,有没有必要为'呼叫abs'在此代码的任何地方:你'gcd'功能已经与相同的符号'B'返回的东西(假设'b '非零),所以简单地用分母和分母除以'gcd(a,b)'总会给你一个正分母。 –