当前位置: 首页 > 科技观察

杨辉三角的5个特点,一个比一个好!

时间:2023-03-17 01:50:07 科技观察

1.前言杨辉三角形的历史杨辉三角形是根据杨辉1261年写的《详解九章算法》一书,里面有一张图,介绍这个算法的是另外一位数学家贾写的《释锁算书》仙书,但这本书早已失传,无从考证。但可以肯定的是,这个图形在我国最迟发现于1200年左右。在欧洲,这个图形被称为“帕斯卡三角”。因为一般认为它是帕斯卡在1654年发明的,其实在帕斯卡之前就已经有很多人普及了。最早的是德国人PertrusAPianus,他曾在1527年写成的一本算术书的封面上刻下这个图形。但无论如何,杨辉三角形的发现在我国至少比欧洲早了300年。另外,杨辉三角形的原名并不是三角形,而是制定方法的由来。后来有人把它叫做乘法图。因为这些名字太过古老,后来都简称为“三角”。在学习杨辉三角的过程中,付哥找到了一个大数学家华罗庚写的PDF《从杨辉三角谈起 - 华罗庚》。——这些数学真的非常重要。每次映射到程序中,都是将for循环优化成算法,提高执行效率的体现。2.杨辉三角的结构在开始分享杨辉三角的特点和代码实现之前,我们先了解一下杨辉三角的结构。杨辉三角的结构和规律非常简单。除了两边每次都是1,中间的数就是上面两个数的和。如图所示的三角形区域。但就是这样一个简单的结构,却有着大量的数理逻辑。包括我们计算的二项式,N的个数选择X,还有斐波那契数列等等,都可以在杨辉的三角形中体现出来。接下来让我们看看这些功能。三、杨辉三角形的特点为了便于研究杨辉三角形的数理逻辑特点,我们将其按左对齐方式排列。[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]下面我们就用这组杨辉三角数来论证它的数理逻辑特性。关于杨辉三角形的Java代码已经放在下面,读者可以参考。1.二项式展开大家肯定在学校学过二项式展开,比如:(x+y)^2=x^2+2xy+y^2其实这个展开的数理逻辑在杨辉的可以说的很好三角形显示。任何二项式展开后的数字乘积,都可以映射到杨辉三角形中对应的数字。二项式展开公式是用于计算给定二项式展开到指数幂的公式。对于给定的二项式(x+y)n,二项式展开公式为:(x+y)^n=x^n+nx^{n-1}y+n(n-1)x^公式{n-2}y^2+...+y^n也刚好符合杨辉三角形的数值。2.组合数组合数是数学中定义的一个数学概念,用来计算从一组项目中选择若干项目的选项有多少。比如你早上有5种水果可以吃,但是不能吃那么多。让你从5种水果中选择2种,看看有多少种选择。通过公式c(n,k)=n!/k!(n-k)!可以计算出5选2有10种选择。那么这样的计算也可以体现在杨辉的三角形中。5选2,可以求出阳辉三角第5行第2列,结果为10。按照这个规律,3选5=10,4选5=53。斐波那契数列斐波那契数列出现在印度数学中,与梵文韵律有关。在梵语诗歌传统中,有兴趣列举所有模式,其中2个单位持续时间的长(L)音节与1个单位持续时间的短(S)音节并列。更多关于斐波那契的知识可以看付哥:《程序员数学:斐波那契》——为什么不能用斐波那契哈希作为数据库路由算法呢?斐波那契数列可以通过一个递归关系来定义:F0=0,F1=1,Fn=Fn-1+Fn-2F0F1F2F3F4F5F6F7F8F90112358132134而这样一个正则的斐波那契数列在杨辉中也有体现在三角形中。将对角线上的数字相加将得到一组斐波那契数列;的特点是有2的次方和11的次方。2的次方-杨辉三角形每一行的数之和,正好是2的0次方,1的次方...n的11次方另一个是11的次方,比如11的2次方的结果正好是121就是这一行数字的组合。如果是11的5次方,中间有连续的10,就是将下一位进位到前一位。5、杨辉三角形中也有一个平方数定律。比如3的平方就是右边3+6的结果。4的平方是右边6+10的结果。4.杨辉三角的实现接下来我们来实现杨辉三角;publicHashMappascalTriangle(intlineNumber){HashMapcurrentLine=newHashMap<>();currentLine.put(0,1);intcurrentLineSize=lineNumber+1;for(intnumberIdx=1;numberIdxcurrentLineMap=pascalTriangle.pascalTriangle(i);系统.out.println(JSON.toJSONString(currentLineMap.values()));}}[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,10,45,120,210,252,210,120,45,10,1]这样我们就可以得到一组杨辉三角序列5.面试常见问题杨辉三角有什么用?用代码实现下阳回三角。——LeetCode里也有这样的题