一、斐波那契数列
斐波那契数列为: 1 1 2 3 5 8 13 21 34 55 …
概念: 前两个值都为1,该数列从第三位开始,每一位都是当前位前两位的和 规律公式为: Fn = F(n-1) + F(n-2) ,F:指当前这个数列, n:指数列的下标。
斐波那契数列 递归写法
function getFbnqslNum($n) {
if ($n == 0) {
return 0;
} if ($n == 1) {
return 1;
} if ($n>=2) {
return getFbnqslNum($n-1) +getFbnqslNum($n-2);
}
}
//非递归写法:
function getFbnqslNum1($n) { //传入数列中数字的个数
if($n <= 0) {
return 0;
}
// 设第一个值和第二个值为1
$array[1] = $array[2] = 1;
for ($i=3; $i<=$n; $i++) {
//从第三个值开始,后面的值都是当前值的前一个值加上前两个值的和
$array[$i] = $array[$i-1] + $array[$i-2];
}
return $array;
}
二、杨辉三角
杨辉三角第一列的值全部为1,行列相等的列值全部为,其余的递推公式为f(i,j)=f(i-1,j-1) + f(i-1, j),其中i为行,j为列。
//获取杨辉三角
function getYanghuiTriangle($line) {
$arr = [];
//控制行数
for ($i=0; $i<$line; ++$i) {
for ($j=0; $j<=$i; ++$j)
{ //控制每一行的列值
if($j==0 || $i==$j) {
$arr[$i][$j]=1;
} else {
$arr[$i][$j]=$arr[$i-1][$j]+$arr[$i-1][$j-1];
}
echo $arr[$i][$j]."\t";
}
echo "\n";
}
}