繁体   English   中英

我试图在这个 python 程序中使用递归,但它显示 NameError。 我应该怎么办?

[英]I am trying to use Recursion in this python program but it shows NameError. What should I do?

class Solution:
    def climbStairs(self, n: int) -> int:
        dic={}
        if n in dic:
            return dic.values
        elif n == 0 or n == 1:
            return 1
        elif n == 2:
            return 2
        else:
            a = climbStairs(n-1) + climbStairs(n-2)
            dict.update == dict.update({n:a})
            return a

b = Solution()
print(b.climbStairs(3))

这是错误:

第 11 行:NameError:未定义名称“climbStairs”

@matt 为您提供了上述问题的答案,但我想指出您的代码存在的几个问题。

dic={}
if n in dic:
    return dic.values

首先values是字典的方法,所以应该是dic.values() 此方法将返回存储在字典中的所有值。 但是,您希望获得对应于n的特定值。 它应该是dic[n] 最后,您创建一个空字典,然后检查其中是否有内容? 当然, n in dic任何时候都是错误的。 您想引用一些在递归之间存储的 memory - 将其保留在实例上是有意义的(例如self.dic

dict.update == dict.update({n:a})

我仍然想知道这段代码应该做什么。 这是一个boolean比较,所以左右部分正在执行和比较......为什么要比较?

update是字典的方法,所以 LHS 没有适当地使用它(没有括号),即使有括号它也没有实现。 RHS 保持字典不变,但对于键n分配值a dict[n]=a不是更容易吗?

最后,object 的名称以前是dic ,现在是dict

我希望它有所帮助。 祝你学习顺利。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM