阳辉三角,又称嘉贤三角、帕斯卡三角、海亚姆三角,是二项式系数的一种写法,形似三角形,最早见于南宋阳辉在中国《详解九章算术》得名,杨辉在书中解释说是引用了贾宪的《释锁算术》,所以又叫贾宪三角。前9层写出如下:1 4 6 4 1 1 5 10 10 5 1 1 首先,我将介绍最简单的方法来找到MN阳辉三角的值(m为行,n为列,例如(5,3)为第五行第三个,值为6)为递归方法:functionrecursion($m,$n){if($n==1||$n==$m||$m==1){返回1;}$val=递归($m-1,$n-1)+递归($m-1,$n);return$val;}这个方法实现最简单,但是如果mn的值特别大,性能会很差。试了100、78,机器卡死了。.迭代法迭代法从第一层开始循环,只循环每一行中必要的列,最后找到mn位置的值。代码如下:functionsetNum($row,$list){$arr=array();对于($i=0;$i<$row;$i++){$start=($list-($row-$i))<0?0:($列表-($行-$i));$end=($list-1)>$i?$i:($列表-1);对于($j=$start;$j<=$end;$j++){如果($i==0||$i==1||$j==0||$i==$j){$arr[$i][$j]=1;}else{$arr[$i][$j]=$arr[$i-1][$j]+$arr[$i-1][$j-1];}}}return$arr[--$row][--$list];}公式方法当然根据杨辉三角形的性质:第n行的m个数可以表示为C(n-1,m-1),mn的值也可以用排列组合的公式得到,代码如下:functionexpress($m,$n){$up=1;对于($i=$m-1;$i>($m-$n);$i--){$up*=$i;}$下来=1;对于($i=$n-1;$i>0;$i--){$down*=$i;}返回$up/$down;}
