两种算法巧算杨辉三角——python

什么是杨辉三角?

杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。

杨辉三角估计大家也都不陌生,早在小学的奥数题里边就有曾出现,估计大家也都见过好几遍了,也了解了杨辉三角的规律,那么今天我们就要用算法来写杨辉三角!

问题描述
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)的i次方的展开式的系数
他的一个重要性质是:三角形中的每个数字等于他两肩上的数字相加
下面给出了杨辉三角形的前4行:
1
1 1
1 2 1
1 3 3 1
给出n,输出他的前n行

算法一

n = int(input())
lists = [[0]*i for i in range(1,n+1)]   # 先创建好杨辉三角的框架
lists[0][0] = 1                         # 把第一个数给到程序
for i in range(1,n):
    for j in range(len(lists[i])):
        if j == 0:
            lists[i][j] = lists[i-1][j]
            continue
        elif j == len(lists[i])-1:
            lists[i][j] = lists[i-1][j-1]
            continue
        lists[i][j] = lists[i-1][j-1]+lists[i-1][j]
for i in lists:
    for j in i:
        print(j,end=" ")
    print()

算法二

n = int(input())
list1 = [1]
for i in range(n):
    list1.append(0)
    list1 = [list1[k] + list1[k-1] for k in range(i+1)]
    print(' '.join([str(i) for i in list1]))

版权声明:本文为LRY___原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。