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

一、斐波那契数列

斐波那契数列为: 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";
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值