递归实现的输出

时间:2017-04-02 05:02:48

标签: python recursion

我尝试实现递归算法:'X'是全局变量

def build_paths(m,n):
    Result = []
    Move = X[(m,n)][1]
    if Move[0] == "None":
       return(Move[0])
    else:
       if Move[0]=="UP":
          m -= 1
       elif Move[0]=="Left":
          n -= 1
       else:
          m -= 1
          n -= 1
       Result = [build_paths(m,n),Move[0]]
    return(Result)

这会生成

[[[[[[['None', 'LEFT'], 'DIAG'], 'DIAG'], 'DIAG'], 'UP'], 'DIAG'], 'DIAG']

这实际上是我想要的,但我真的想要的是

['None','LEFT','DIAG','DIAG','UP','DIAG','DIAG']

然后我将递归函数的第二行改为

Result = [build_paths(m,n)].extend(Move[0])

我认为逻辑上它是正确的,即我继续扩展我的列表,但最终,它只输出

None

我无法弄清楚为什么会发生......

1 个答案:

答案 0 :(得分:0)

build_paths()返回一个列表,extend返回None(它修改了它的参数),所以你想要:

Result = build_paths(m,n)
Result.append(Move[0])