Итак, я недавно начал заниматься объектно-ориентированным программированием на 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)
Когда я вызываю функцию Greatest Common Divisor в другом методе, который нуждается в поиске наибольшего делителя числителя, я получаю:
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
Я вызываю функцию так:
X = fractions(9, 36)
X.GreatestCommonDivisor(X.numerator, X.denominator)
Если кто-то может сказать мне, в чем заключается проблема и как ее исправить, я был бы очень признателен, это мое первое использование рекурсивной функции в классе.