PHP实现斐波那契数列

简介

斐波那契数列(Fibonacci Sequence),又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)。我用递归和迭代两种方法实现了斐波那契数列


实现代码(php)

<?php

class Fibonacci
{

    /**
     * Description:迭代方法获取fibonacci第n项数值
     *
     * @param int $n            
     * @return int
     */
    public static function fib_interation ($n)
    {
        $fib = array(); // 定义fibonacci数组
        
        if ($n < 0) {
            return 0;
        }
        
        for ($fib[0] = 0, $fib[1] = 1, $i = 2; $i <= $n; $i ++) {
            $fib[$i] = $fib[$i - 1] + $fib[$i - 2];
        }
        
        return $fib[$n];
    }

    /**
     * Description:递归方法获取fibonacci第n项数值
     *
     * @param int $n            
     * @return int
     */
    public static function fib_recursive ($n)
    {
        if ($n <= 0) {
            return 0;
        } elseif ($n == 1) {
            return 1;
        } else {
            return self::fib_recursive($n - 1) + self::fib_recursive($n - 2);
        }
    }
}

$fib1 = Fibonacci::fib_interation(5);
echo $fib1 . "\n";

$fib2 = Fibonacci::fib_recursive(10);
echo $fib2 . "\n";

?>

运行结果



缺点

今天看道这篇博客浏览量还挺高,因此重构了一下代码,半年前的水平确实差,代码看着就恶心,今天重构一下!
其次,编程之美上介绍了一种分治策略求fibonacci的方法,不过我没掌握,有兴趣的同学可以贴出实现代码讨论一下,建议c或者php!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值