使用python递归返回特定的pascals三角形线

时间:2016-05-19 01:38:03

标签: python recursion pascals-triangle

我写的代码应该有如下输出:

>>> pascalLine(0)
[1]
>>> pascalLine(1)
[1, 1]
>>> pascalLine(2)
[1, 2, 1]
>>> pascalLine(3)
[1, 3, 3, 1]

我有代码通过迭代执行此操作,但我需要递归完成,并且我在尝试这样做时迷失了方向。这是我的代码:

def pascalLine(n):
    value = 1
    new_row = [value]
    if n == 0:
        return new_row
    else:
        for i in range(n):
            value = int((value * (n-i)) / (i+1))
            new_row.append(value)
        return new_row

欢迎任何帮助!谢谢!

1 个答案:

答案 0 :(得分:2)

以下情况如何?

from operator import add

def pascal_line(n):
    if n < 2:
        return [1]*(n+1)
    l = pascal_line(n-1)
    return [1] + map(add, l[1:], l[:-1]) + [1]