问题:
在这个问题中,我们要评估的场景如下:您正站在楼梯的底部,正向楼梯的顶部前进。一小步将爬上一个楼梯,一大步将爬上两个楼梯。您希望根据大步和小步的不同组合来计算爬上整个楼梯的方法数。例如,一个有三个台阶的楼梯可以用三种不同的方法爬上:三个小步,一个小步接着一个大步,或者一个大步接着一个小步。编写一个递归方法waysToClimb
,该方法接受一个表示楼梯数量的非负整数值,并打印爬该高度楼梯的每个唯一路径,一次走一个或两个楼梯的步幅。您的方法应该在自己的行上输出爬楼梯的每个路径,使用1表示1级的小步幅,使用2表示2级的大步幅。例如,调用waysToClimb(3)
应生成以下输出:
[1, 1, 1]
[1, 2]
[2, 1]
我的代码:
def waysToClimb(n,a=[]):
if n == 0:
print(a)
if n >= 1:
a.append(1)
waysToClimb(n-1,a)
if n >= 2:
a.append(2)
waysToClimb(n-2,a)
但例如当我输入:print(waysToClimb(3,[]))
结果是[2, 1] [2, 1, 1, 2] [2, 1, 1, 2, 1, 1]
。为什么我的代码不能正常工作?
编辑:我应该在函数内部而不是函数外部修改"a"变量。我写了fct(n,a +[2])而不是. append(2),它工作了。谢谢大家的帮助。
2条答案
按热度按时间vvppvyoh1#
一些,嗯,* 不同 * 错综复杂的东西:
o2rvlv0m2#
refer to this link
向下滚动提到的链接,你会发现我粘贴在这里的代码。
已经有人给了,这将帮助你找出正确的答案。