所以我最近开始用Python进行面向对象编程,对于一个特定的问题,我必须编写一个处理分数的类.通过减法和加法等常用数学运算符的编写方法,一切似乎都很顺利; 但是,我坚持使用递归方法.
class fractions():
def __init__(self, numerator, denominator):
self.numerator = numerator
self.denominator = denominator
def GreatestCommonDivisor(self, numerator, denominator): # This is the culprit
if numerator%denominator == 0:
return denominator
else:
return GreatestCommonDivisor(self, denominator, numerator%denominator)
Run Code Online (Sandbox Code Playgroud)
当我用另一种需要找到分子最大除数的方法调用最大公约数函数时,我得到:
Traceback (most recent call last):
File "C:\Program Files (x86)\Wing IDE 101 3.2\src\debug\tserver\_sandbox.py", line 1, in <module>
# Used internally for debug sandbox under external interpreter
File "C:\Program Files (x86)\Wing IDE 101 3.2\src\debug\tserver\_sandbox.py", line 9, in GreatestCommonDivisor
NameError: global name 'GreatestCommonDivisor' is not defined
Run Code Online (Sandbox Code Playgroud)
我把这个函数称为:
X …Run Code Online (Sandbox Code Playgroud)