聚热点 juredian

走进传奇的“杨辉三角”

0 引言

杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。它具有以下的特征:1、最外层的数字始终是 1 2、第二层是自然数列 3、第三层是三角数列 4、三角数列相邻数字相加可得方数数列 5、每一层的数字之和是一个2倍增长的数列 6、斐波那契数列(按一定角度排列) 7、素数(在杨辉三角里,除了第二层自然数列包含了素数以外,其他部分的数字都完美避开了素数。) 8、可以被特定数整除的数字形成了奇妙的分形结构

1 问题描述

用python写出杨辉三角数

示例一:

输入: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 结语

杨辉三角的探讨是对古典数学的回顾,也是对逻辑思维的探讨,从逻辑发现数学之美,探讨编程的博大精深。

搜索建议:走进传奇的“杨辉三角”