[英]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.