1. 养乐多|杨城的个人博客首页
  2. 技术杂谈
  3. PHP

求斐波那契数列的第n项

有这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21…求第n项的数字。这个问题就是求斐波那契数列的第n项。

/**
 * for循环
 *
 * @param  integer $n 数列长度
 * @return array
 */

function forcycle($n = 0)
{
    $res = [];
    for ($i = 0; $i < $n; $i++) {
        if ($i === 0) {
            $res[] = 0;
            continue;
        }
        if ($i === 1) {
            $res[] = 1;
            continue;
        }
        $res[] = $res[$i - 1] + $res[$i - 2];
    }
    return $res;
}
//
$list = forcycle(12);
print_r($list);
/**
 * 递归循环
 *
 * @param  integer $n   数列长度
 * @param  integer $i   当前位置
 * @param  integer $res 数列
 * @return array
 */

function recursion($n = 0, $i = 0, $res = [])
{
    if ($i >= $n) {
        return $res;
    }
    if ($i === 0) {
        $res[] = 0;
    } elseif ($i === 1) {
        $res[] = 1;
    } else {
        $res[] = $res[$i - 1] + $res[$i - 2];
    }
    return recursion($n, ++$i, $res);
}
$list = recursion(12);
print_r($list);
//得到一个数组
Array
(
    [0] => 0
    [1] => 1
    [2] => 1
    [3] => 2
    [4] => 3
    [5] => 5
    [6] => 8
    [7] => 13
    [8] => 21
    [9] => 34
    [10] => 55
    [11] => 89
)
//第12项的数字则为$list[12-1] 即为 89。

原创文章,作者:iConan,如若转载,请注明出处:https://www.aspyc.com/archives/805.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据