本文作者:心月

php实现杨辉三角算法解析

心月IT博客 01-16
php实现杨辉三角算法解析摘要:​杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。

        杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉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;
}

至于能不能得到杨辉三角,来实例验证下:

php实现杨辉三角实例验证

        代码运行结果与杨辉三角一致。代码函数返回的值就是n阶杨辉三角,如果想得到某一行某一列的值,只需按二维数组取值的方式就可以得到想要的结果。

文章版权及转载声明:

本文由 心月IT技术博客 博主整理于 01-16
若转载请注明原文及出处:https://www.xinyueseo.com/algorithm/602.html

分享到:
赞(
发表评论
快捷输入:

验证码

    评论列表 (有 0 条评论,人围观)参与讨论