杨辉三角分析:
- 它的每行的第一列与最后一列的值都是1;
- 它的每行中的其它列的值都是上一行同列的值与上一行左上列的值相加;
- 由于它是每一行由多列组成,所以可以把它们放到一个二维数组中;
public function shu($n)
{
$result[0][0] = 1;
$arr = array();
for ($i = 1; $i < $n; $i++) {
for ($j = 0; $j <= $i; $j++) {
if ($j == 0 || $j == $i) {
$arr[$j] = 1;
$result[$i][$j] = 1;
} else {
$result[$i][$j] = $result[$i - 1][$j - 1] + $result[$i - 1][$j];
if ($arr[$j] < strlen($result[$i][$j])) $arr[$j] = strlen($result[$i][$j]); //统计每列的最大长度
}
}
}
foreach ($result as $key => $v) {
echo '<br>';
$b = '';
for ($x = 0; $x < count($v); $x++) {
$c = '';
for ($e = 0; $e <= ($arr[$x] - strlen($v[$x]))*2; $e++) { //每个数字等于2个
$c .= ' ';
}
$b .= $v[$x].$c;
$b .= " "; //增加每列之间的空白长度
}
echo $b;
}
}