PHP 斐波那契数列实现

PHP 斐波那契数列数列实现

<?php

// 递归
function fff($n)
{
    $fbnq = [];
    switch ($n) {
        case 1:
            $fbnq = [1];
            break;
        case 2:
            $fbnq = [1, 1];
            break;
        default:
            if ($n < 0) {
                $fbnq = [0];
            } else {
                $fbnq = fff($n - 1);
                array_push($fbnq, end($fbnq) + end(fff($n - 2)));
            }
    }
    return $fbnq;
}

// 非递归
function ffff($n)
{
    if ($n < 1) {
        return 0;
    }
    for ($i = 1; $i <= $n; $i++) {
        switch ($i) {
            case 1:
            case 2:
                echo 1;
                break;
            default:
                $n1 = $n2 ?: 1;
                $n2 = $n3 ?: 1;
                $n3 = $n1 + $n2;
                echo $n3;
        }
        echo ' ,';
    }
}

var_export(fff(9));
echo "\r\n";
var_export(ffff(9));

补充
<?php
function fib($n)
{
    $cur = 1;
    $prev = 0;
    for ($i = 0; $i < $n; $i++) {
        yield $cur;

        $temp = $cur;
        $cur = $prev + $cur;
        $prev = $temp;
    }
}

$fibs = fib(9);
foreach ($fibs as $fib) {
    echo " " . $fib;
}

// prints: 1 1 2 3 5 8 13 21 34
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值