杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。
先来通过一张图看看杨辉三角是什么样的
从图中可以得出杨辉三角的特点:
①每个数等于它上方两数之和。 ②每行数字左右对称,由1开始逐渐变大。(其实还是上方两数之和)
既然知道了杨辉三角的特点,通过php该如何实现呢?
现在我们来换一种方式看杨辉三角:
这样看是不是更清晰呢?每一个元素都是对应上一行的元素与上一行前一个元素的和
下面就通过代码来实现这个杨辉三角:
把杨辉三角当成一个数组,每一行是一个数组,然后这些所有行在组成一个新数组,于是杨辉三角就成了一个 [[],[],[],[]....] 这样的二维数组。然后根据杨辉三角的特点就可以得到下面的代码:
<?php function triangle($n){ $arr = []; if ($n<0) return; for($i=1;$i<=$n;$i++){ for($j=1;$j<=$i;$j++){ $k = $i-1; if(!empty($arr[$k])){ $arr[$i][$j] = intval($arr[$k][$j]) + intval($arr[$k][$j-1]); }else{ $arr[$i][$j] = 1; break; } } } return $arr; }
至于能不能得到杨辉三角,来实例验证下:
代码运行结果与杨辉三角一致。代码函数返回的值就是n阶杨辉三角,如果想得到某一行某一列的值,只需按二维数组取值的方式就可以得到想要的结果。