我目前正在尝试创建一个递归函数,以解决并返回staircase problem中可以采用的所有可能路径。到目前为止,我的示例代码是:
num_input = int(input("How many stairs are there? "))
def num_ways(num=2, n_minus2=None, n_minus1=None):
if n_minus2 is None:
n_minus2 = [[0]]
n_minus1 = [[0, 1]]
if num_input == 0:
return n_minus2
elif num_input == 1 or num > num_input:
return n_minus1
else:
new_n_minus2 = n_minus1
for i in n_minus1:
i.append(num)
for a in n_minus2:
a.append(num)
new_n_minus1 = n_minus2 + n_minus1
num += 1
return num_ways(num, new_n_minus2, new_n_minus1)
print(num_ways())
当前,如果我输入3作为阶梯数,我的代码将返回以下内容:
[[0, 1, 2, 3, 3], [0, 2, 3], [0, 1, 2, 3, 3]]
代替
[[0, 1, 2, 3], [0, 2, 3], [0, 1, 3]]
在多次运行代码之后,尽管我从未在其上显式调用该方法,但我可以确定new_n_minus2变量附加了num。我确定我只是在范围或for循环中缺少了一些愚蠢的东西,但到目前为止,我一直陷于困境。