跳转至

杨辉三角


"""
打印杨辉三角
1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
1 5 10 10 5 1 
1 6 15 20 15 6 1 
1 7 21 35 35 21 7 1 
1 8 28 56 70 56 28 8 1
"""

def yhsj1(n):
    """递归(效率低不推荐)"""

    listx = ['1']
    listy = listx[:]

    if n == 1:
        return listx
    if n == 2:
        listy.append('1')
        return listy

    leny = len(yhsj1(n - 1))

    for i in range(leny):
        if i < leny - 1:
            z = int(yhsj1(n - 1)[i]) + int(yhsj1(n - 1)[i + 1])
            listy.append(str(z))
    listy.append('1')

    return listy


def yhsj2(n):
    """循环(推荐)"""
    lists = []
    for i in range(n):
        lists += [1]
        if i > 1:
            lists_cp = lists[:]
            for j in range(1,i):
                lists[j] = lists_cp[j] + lists_cp[j-1]
        for sj in lists:
            print(sj, end = '\t')
        print()


def main():
    # 调用9次函数打印结果
    for i in range(1, 10):
        print('\t'.join(yhsj1(i)))

    yhsj2(9)


if __name__ == '__main__':
    main()