首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类中的递归函数错误: python 2.7中没有定义全局名称'XXX‘,但在python 3中工作正常

类中的递归函数错误: python 2.7中没有定义全局名称'XXX‘,但在python 3中工作正常
EN

Stack Overflow用户
提问于 2019-01-09 16:49:33
回答 1查看 501关注 0票数 0

我在Class中写了一个递归函数,它在python 3中运行良好,但在python 2中不起作用。我想知道我应该如何在python 2中修复它

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2019-01-10 02:56:33

尝试调用self.jumpFloor()而不是简单的jumpFloor() (并确保缩进正确):

代码语言:javascript
复制
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))

这在Python2和Python3中都适用。递归例程似乎不完整,因为它不能处理0(至少),更不用说过滤掉负数了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54106203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档