php 实现斐波那契数列和杨辉三角

一、斐波那契数列

斐波那契数列为: 1 1 2 3 5 8 13 21 34 55 …

概念: 前两个值都为1,该数列从第三位开始,每一位都是当前位前两位的和 规律公式为: Fn = F(n-1) + F(n+1) 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 getFbnqslNum($n){  //传入数列中数字的个数     if($n <= 0){         return 0;     }     $array[1] = $array[2] = 1; //设第一个值和第二个值为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 " ; } }

猜你喜欢

转载自blog.csdn.net/chinawangfei/article/details/79424636