Рекурсивная функция в ошибке класса: «глобальное имя« XXX »не определено» в Python 2.7, но работает в Python 3 - PullRequest
0 голосов
/ 09 января 2019

Я написал функцию рекурсии в классе, она хорошо работает в Python 3, но не работает в Python 2. Интересно, как мне исправить это в Python 2

class Solution:
def jumpFloor(self, number):
    # write code here
    if number == 1 or number == 2:
        ways = number
        return ways
    elif number > 2:
        return jumpFloor(number-1) + jumpFloor(number-2)

test = Solution()
for i in range(8):
    print(test.jumpFloor(i))


#In python 3, the results are shown like:    
None
1
2
3
5
8
13
21

#But running the same code in python 2, it says:
global name 'jumpFloor' is not defined

1 Ответ

0 голосов
/ 09 января 2019

Попробуйте позвонить self.jumpFloor() вместо простого jumpFloor() (и убедитесь, что ваш отступ правильный):

class Solution:

    def jumpFloor(self, number):

        if 1 <= number <= 2:
            return number

        if number > 2:
            return self.jumpFloor(number - 1) + self.jumpFloor(number - 2)

test = Solution()

for i in range(8):
    print(test.jumpFloor(i))

Это работает для меня как в Python 2, так и в Python 3. Рекурсивная подпрограмма кажется неполной, поскольку она не обрабатывает 0 (по крайней мере), не говоря уже о том, чтобы отфильтровывать отрицательные числа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...