尽管未使用append(),但仍将列表添加到

时间:2019-03-13 23:50:49

标签: python loops recursion

我目前正在尝试创建一个递归函数,以解决并返回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循环中缺少了一些愚蠢的东西,但到目前为止,我一直陷于困境。

0 个答案:

没有答案