首页 > 后端开发 > php教程 > 题目2:在斐波那契数列中,找出4百万以下的项中值为偶数的项之和。

题目2:在斐波那契数列中,找出4百万以下的项中值为偶数的项之和。

WBOY
发布: 2016-07-29 09:15:50
原创
1240 人浏览过
<?php /**
 * 题目2:在斐波那契数列中,找出4百万以下的项中值为偶数的项之和。
 *
 * @autor 花生米
 * @date  2015-09-08
 * @desc  php version 5.4.33
 */

$max = 40000000000;

/**
 * 思路1
 * 时间复杂度:O(n)
 * 这是最容易想到的方法
 */
if (false) {
    $a = 1;
    $b = 2;
    $s = 0;//总和
    while ($b < $max) {
        //偶数则加
        if (($b & 1) == 0) {
            $s += $b;
        }
        $t = $b;
        $b = $a + $b;
        $a = $t;
    }
}

/**
 * 思路2:(优)
 * 时间复杂度:O(n)
 * 斐波那契数列
 * 0 1 1 2 3 5 8 13 21 34 55 89 144 ...
 *   a b c a b c a  b  c  a  b   c
 * 仔细观察可知,都是每三项一个偶数,而且
 * 8   = 4 * 2 + 0;
 * 34  = 4 * 8 + 2;
 * 144 = 4 * 34 + 8;
 * 故思路2就是这个方式来求解
 */
if (false) {
    $a = 0;//第一项从0开始
    $b = 2;//第二项从2开始
    $s = 0;
    while ($b < $max) {
        if (($b & 1) == 0) {
            $s += $b;
        }
        $t = $b;
        $b = 4 * $b + $a;
        $a = $t;
    }
}
登录后复制

版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了题目2:在斐波那契数列中,找出4百万以下的项中值为偶数的项之和。,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板