带有leetcode的全局变量python

带有leetcode的全局变量python,python,Python,我目前正在处理Leetcode中的爬楼梯问题,我的解决方案是使用递归。要返回计数器而不重置,我必须使用全局计数。 这是我的密码: count =0 class Solution: def climbStairs(self, n: int) -> int: global count root = Tree() root.data = n if root.data - 1 >= 0:

我目前正在处理Leetcode中的爬楼梯问题,我的解决方案是使用递归。要返回计数器而不重置,我必须使用全局计数。 这是我的密码:

count =0
class Solution:
    def climbStairs(self, n: int) -> int:
        global count
        root = Tree()
        root.data = n
        if root.data - 1 >= 0:       
            root.left= self.climbStairs(n-1)
        if root.data -2 >= 0:     
            root.right= self.climbStairs(n-2)
        if (root.left == None) and (root.right == None):
            count+= 1
        return count

在单次运行中,每个用例似乎都正常,但当我提交它时,结果是错误的,我意识到,因为全局计数并没有重置为每个测试用例(输入=2->输出=2,输入=3->输出=5)(应该是输出=3,但得到5,因为(来自上一个测试用例的2+来自当前测试用例的3).由于leetcode不允许我更改函数参数,我是否可以处理此问题。非常感谢您我想说,如果您针对一系列测试用例输入1、2、3、4、5、6等运行您的解决方案,您将识别输出的模式/顺序,并找出一种更简单的方法。但是如果您想这样做在您正在做的事情中,一种方法是使用实例变量来跟踪计数,并使用一个实际执行递归的帮助函数来调用ClimpStairs函数,例如:

class Solution:
    def count_ways(self, n):
        root = Tree()
        root.data = n
        if root.data - 1 >= 0:
            root.left = self.count_ways(n - 1)
        if root.data - 2 >= 0:
            root.right = self.count_ways(n - 2)
        if (root.left == None) and (root.right == None):
            self.count += 1
        return self.count

    def climbStairs(self, n):
        self.count = 0
        self.count_ways(n)
        return self.count

我想说的是,如果您针对一系列测试用例输入1、2、3、4、5、6等运行您的解决方案,您将识别输出所构成的模式/顺序,并找出一种更简单的方法。但是,如果您想按照您正在做的方式来做,一种方法是使用一个实例变量来跟踪计数,以及一个助手函数这实际上是递归,例如,对于要调用的ClimpStairs函数:

class Solution:
    def count_ways(self, n):
        root = Tree()
        root.data = n
        if root.data - 1 >= 0:
            root.left = self.count_ways(n - 1)
        if root.data - 2 >= 0:
            root.right = self.count_ways(n - 2)
        if (root.left == None) and (root.right == None):
            self.count += 1
        return self.count

    def climbStairs(self, n):
        self.count = 0
        self.count_ways(n)
        return self.count

我不认为你指望所有人都知道你在Leetcode中所说的爬楼梯问题是什么意思。将逻辑移到另一个函数,然后使用
爬楼梯
函数重置计数并调用新函数。或者将计数器作为默认变量放入函数定义
def grampstairs(self,n,count=0)
并相应地更改其余逻辑您没有描述所需的输出、当前的输出、您的代码打算做什么,或提供一个新的输出。我不熟悉LeetCode,是否需要全局变量?顺便说一句,递归在Python中很少是正确的答案。我不认为您指望所有人都知道您的意思Leetcode中的攀登楼梯问题。
将逻辑移到另一个函数,然后使用
攀登楼梯
函数重置计数并调用新函数。或者将计数器作为默认变量放入函数定义
def GRAMPSTAILS(self,n,count=0)
并相应地更改其余的逻辑您没有描述所需的输出、当前输出、您的代码打算做什么,也没有提供。我不熟悉LeetCode,是否需要全局变量?顺便说一句,递归在Python中很少是正确的答案。