我正在编写自己的 Rational 类版本,我想递归地使用最大公约数。我需要考虑负数 - 我总是想在分子中表示我的负数,所以假设 num=1 和 denom=-2,我想将其表示为 num=-1 和 denom=2 并且如果 num=-1 且 denom=-2 则 num=1 且 denom=2。我知道我需要使用 abs 函数来查找 gcd 但如果我删除负号以找到 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!!