OOP Python中的递归函数调用

2024-10-03 09:07:24 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我最近开始用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)

当我在另一个需要找到分子最大除数的方法中调用最大公约数函数时,我得到:

^{pr2}$

我把这个函数叫做:

X = fractions(9, 36)
X.GreatestCommonDivisor(X.numerator, X.denominator)

如果有人能告诉我这里的问题是什么,以及如何解决它,我将不胜感激,这是我第一次在类中使用递归函数。在


Tags: 方法函数selfreturninitdef运算符数学
2条回答

这一行是名称错误发生的地方:

return GreatestCommonDivisor(self, denominator, numerator%denominator)

应改为:

^{pr2}$

GreatestCommonDivisor是一个实例方法,不是一个全局方法。你必须这么做

return self.GreatestCommonDivisor(denominator, numerator%denominator)

你似乎还没有完全掌握面向对象的概念。在

相关问题 更多 >