php 实现杨辉三角



经典的杨辉三角

我们来分析一下 使用php来实现他


观察出来的结果如下

1 每行的第一个和最后一个数字 都是1 

2 第三行起 除了第一个 和最后一个数字 别的数字 都是 上一行的对应的和前一个数字的和

1   
1   1   
1   2   1   
1   3   3   1   
1   4   6   4   1   


代码实现

/**
* 杨辉三角
* 每行的数字总数 和层数相同
* @param int $m 层数
* @param int $n 空格数量
*/
function yanghuisanjiao($m,$n){
   $map = array();
   for ($i=0;$i<=$m;$i++){
       for ($j=0;$j<=$i-1;$j++){
           $map[$i][0] =1;
           $map[$i][$i-1] =1;
           if($i>2 && $j!=0 && $j!=$i-1){
               $map[$i][$j] = $map[$i-1][$j] + $map[$i-1][$j-1];
           }
       }
   }
   sort($map);
   if($map){
       foreach ($map as $key=>$val){
           ksort($val);
           foreach ($val as $k=>$v){
               echo $v;
               echo str_repeat('&nbsp;',$n);

           }
           echo '<br/>';
       }
   }

}
yanghuisanjiao(10,3);


结果是

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   


这里用到的函数 有 

str_repeat  

sort

ksort  



本人主要从事APP开发。QQ:529857614 (请注明需求);

上一篇: php 画出一个菱形
下一篇: PHP 实现快速排序