注意,每个后续行中的条目可以通过以下方式获得在前一行中添加一个或两个条目:同一列加上前一列中的条目(如果有一)。
11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1
还要注意,第n+1行中的项之和是第n行的总和。考虑到每一项在前一行中,对下一行贡献两次,对向左,向右各一次——每一次的有效加倍术语。
在下面的输出中(以蓝色显示),每个数字后面的“L”将这些指定为“长整数”,表示它们具有能够扩展到比通常多得多的数字可由普通整数数据类型表示。这个区别是计算机科学家比数学家,但这不是把它放在这里的原因,因为“计算+计算机识字”方法试图将这些内容混合起来学科,寻找更强大、更有弹性的基因混合。
>>>船首系列(10)#帕斯卡三角形的第10行(第0行=顶点=1)
[1升、10升、45升、120升、210升、252升、210 L、120升,45升、10 L、1升]
>>>系列集水坑(10)# = 2**10
1024升
>>>船首系列(11)[1L,11L,55L,165L,330L,462L,462L,330L,165L,55L,11L,1L]
>>>sumprow系列(11)#前一个总和的两倍=2**11
2048升
在本次讨论的背景下,特别有趣的是事实上,三角形和四面体数字出现在帕斯卡的按此三角形相关展览.
>>>系列.showpascal(9)#第0-9行(即总共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,3,6,10,15。。。三角形数字。在第四列中,我们发现了四面体数字。因此,如果我们有一个算法来生成帕斯卡三角的单个条目(由于二项式定理),那么我们还有另一种获得三角形的方法和四面体数:我们只需按行和列查找它们数字。
定义 聚四氟乙烯(ptri)(n) :#在pascal三角形中查找第n个三角形数 返回帕斯卡(n+1,n-1)定义 普特拉(n) :#查找pascal三角形中的n个四面体数 返回帕斯卡(n+2,n-1)
除了帕斯卡的三角形,让我们考虑帕斯卡的四面体。我们可能会产生采用类似算法的术语:对于N级条目,在N-1级的“接触球体”中添加所有条目(上一个级别)。以下是0-5级:
1 1 1 1 1 11 1 2 2 3 3 4 4 5 5 1 2 1 3 6 3 6 12 6 10 20 101 3 3 1 4 12 12 4 10 30 30 101 4 6 4 1 5 20 30 20 51 5 10 10 5 1
由于“三项式定理”,我们可以计算这些条目直接,无需穿过层。系列.py模块包括功能帕西特,乘客地铁、和帕斯特列夫用于从返回条目、行和级别帕斯卡四面体。再次注意,返回的条目位于“long integer”格式,意味着Python将能够接受我们高水平:
>>>导入系列>>>pasctetlev系列(4)#帕斯卡尔四面体:等级4
[1L](1升)[4升,4升][6L、12L、6L][4升、12升、12 L、4升][1升、4升、6升、4 L、1升]
>>>pasctetrow系列(20,7)#帕斯卡四面体:第7行第20层
[77520升、542640升、1627920升、2713200升、2713000升、16279 20L、542640L、77520L]
>>>pasctet系列(1152735386)#第735行第386列第1152级条目
153202734648260055381959911220228768182939777206572683532896995453595012019385356901114962128680481543994469438986151509280398686149067872965775691312341665617295940798926886877195584936772207524455808589631224564017472927531771447354728258549337406489016851527945571723587571870340468835451201134893776086444129440539661160688461903784323708537577992268337482867315242592929406357422427093983842700869455305611052059364377239516061448390240633752539884483174162285972219972813150889760652564618759185795739538454456326396710167994578717139200000升
让我们考虑一个著名的为命名的数字系列斐波纳契(1170-1250) ...
>>>fibo级数(5)#L表示“长整数”,使用递归方法
5升>>>int(series.fibo(5))#转换long->integer
5
>>>地图(fibo系列,[0,1,2,3,4,5])#map将函数应用于列表
[0L、1L、1R、2L、3L、5L]
>>>map(int,map(series.fibo,range(11))#地图的地图
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
>>>地图(fibo2系列,范围(10,20))#使用帕斯卡三角形
【55升、89升、144升、233升、377升、610升、987升、1597升、2584升、4181升】
>>>地图(fibo3系列,范围(10,20))#使用phi的浮点方法
[55.0, 89.0, 144.0, 233.0, 377.0, 610.0, 987.0, 1597.0, 2584.0, 4181.0]
……通过将两个连续项相加得出每个连续项之前的条款。
而本节的Python模块(系列.py)包含递归生成此序列的算法,它还包括一个规则从帕斯卡三角形中获取斐波那契数,如下图。
|