繁体   English   中英

python 最后一行递归帕斯卡三角形

[英]python last row recursive pascal triangle

我必须创建一个递归 function pascal(n) ,它将帕斯卡三角形的第n行作为列表返回(因此pascal(3)返回[1, 3, 3, 1] )。

到目前为止我有

def pascal(n):

    if n==1: 
        return [[1]]
    else:
        result=pascal(n-1)
        row=[1]
        last_row=result[-1]
        for i in range(len(last_row)-1):
            row.append(last_row[i]+last_row[i+1])
        row+=[1]
        result.append(row)
        return row

但这会导致错误

'int' 类型的 object 没有 len()

如果我改为写

def pascal(n):

    if n==1: 
        return [[1]]
    else:
        result=pascal(n-1)
        row=[1]
        last_row=result[-1]
        for i in range(len(last_row)-1):
            row.append(last_row[i]+last_row[i+1])
        row+=[1]
        result.append(row)
        return result

然后调用pascal(3)[-1] ,就没有问题了。 我该如何解决这个问题? 谢谢。

您希望pascal(n)将帕斯卡三角形的第 n 行作为列表返回,但您将返回 [[1]] 而不是 [1] 的pascal(1)

此外,“last_row”,即对应于 pascal(n) 的前一行将是pascal(n-1)而不是pascal(n-1)[-1] 在您的代码中, result[-1]pascal(n-1)[-1] ,它是第 (n-1) 行的最后一个元素 (int),因此是错误的。

在进行上述 2 项更改后,这将是您的 function。

def pascal(n):
    if n == 0: 
        return [1]
    else:
        last_row = pascal(n-1)
        row = [1]
        for i in range(len(last_row)-1):
            row.append(last_row[i]+last_row[i+1])
        row += [1]
        return row

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM