python解决杨辉三角问题

杨辉三角问题(python)
样例输入
4
样例输出
1
1 1
1 2 1
1 3 3 1

def fact(n):
    if n==1 or n==0:
        a = 1
    else:
        a = n * fact(n-1)
    return a
def pailie(n,m):
    a = fact(n)//fact(n-m)
    return a
def zuhe(n,m):
    a = pailie(n,m)//fact(m)
    return a
n = eval(input())
for i in range(0,n):
    print()
    for j in range(0,i+1):
        print(zuhe(i,j),end=" ")


运行后超时,为什么不是最简的呢

你可以参考这个:
上面那位的输出格式跟你的有点不一样

N = int(input())
listA = [[1]]
for i in range(1, N):
    listB = [1]*(i+1)
    for j in range(1, i):
        listB[j] = listA[i-1][j-1] + listA[i-1][j]
    listA.append(listB)
 
for i in listA:
    for j in i:
        print(j, end = ' ')
    print()

有用请点个采纳~

你这里边又是阶乘又是除法的。你是不是找到一个很独特的规律?
杨辉三角不是这样的吗?

img

class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        triangle=[]
        for i in range(numRows):
            temp=(i+1)*[0]
            temp[0]=1
            temp[-1]=1
            if i>1:
                for j in range(1,i):
                    temp[j]=triangle[i-1][j-1]+triangle[i-1][j]
            triangle.append(temp)
        return triangle