0 引言
杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。它具有以下的特征:1、最外层的数字始终是 1 2、第二层是自然数列 3、第三层是三角数列 4、三角数列相邻数字相加可得方数数列 5、每一层的数字之和是一个2倍增长的数列 6、斐波那契数列(按一定角度排列) 7、素数(在杨辉三角里,除了第二层自然数列包含了素数以外,其他部分的数字都完美避开了素数。) 8、可以被特定数整除的数字形成了奇妙的分形结构
1 问题描述
示例一:
输入:n = 10
输出:“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
1 9 36 84 126 126 84 36 9 1”
解释:除两边的1之外,每个数字等于它肩上的两数字之和
2 算法描述
解题思路:首先要明白杨辉三角的组成为,除了两边的1之外,每个数字等于它肩上的两数字之和。(其实两边的1也可以想成在左右两边的1的左右还有个0)。我们由杨辉三角可得其第一行为1,所以暂定一个arr = [1],在知道运行逻辑后我们就运用循环求出所需行数的杨辉三角数(这里运用的是while循环)。因为杨辉三角数由其肩上左右两数之和所得,但通过观察我们可得杨辉三角数整体是呈现对称分布的,所以在这里我们确定一个为左起始,一个为右起始的列表,之后我们就可以通过循环求和,得到杨辉三角数。但是之后发现得到的是个集合,所以为了美观,我们先将其转化为字符串(str),通过简单内置函数“join”连接字符串,得到最终答案。当然我们发现最后会少个1,没关系,这个直接打印,简单又粗暴。
3 实验结果与讨论
通过编程最终实现了杨辉三角的呈现。
附件
代码清单 用python求出杨辉三角数
arr = [1] print(1) # 初始结果 while len(arr) < 10: # 确定行数 a = [0] + arr # [0,1,1]代表从右往左的全部三角数 b = arr + [0] # [1,1,0]代表从左往右的全部三角数 arr = [a[i] + b[i] for i in range(len(a))] # [1,2,1] 通过求和相加求出所有的杨辉三角数 s = [str(i) for i in arr] # 将答案变成字符串的类型 print(' '.join(s)) # 连接字符串,输出答案 |
4 结语
杨辉三角的探讨是对古典数学的回顾,也是对逻辑思维的探讨,从逻辑发现数学之美,探讨编程的博大精深。
有话要说...