题目

给一个正整数num,返回小于或等于num的斐波纳契奇数之和。

斐波纳契数列中的前几个数字是 1、1、2、3、5 和 8,随后的每一个数字都是前两个数字之和。

例如,sumFibs(4)应该返回 5,因为斐波纳契数列中所有小于4的奇数是 1、1、3。

提示

此题不能用递归来实现斐波纳契数列。因为当num较大时,内存会溢出,推荐用数组来实现。

参考文档:博客园Issue 
Remainder

测试用例

  • sumFibs(1) 应该返回一个数字。
  • sumFibs(1000) 应该返回 1785
  • sumFibs(4000000) 应该返回 4613732
  • sumFibs(4) 应该返回 5
  • sumFibs(75024) 应该返回 60696
  • sumFibs(75025) 应该返回 135721

分析思路

斐波那契数第一个和第二个为 1 是固定的,所以初始数组可以设置为: 
var fibsArray = [1, 1]; 
然后根据最后一个数等于前两数之和设置下一个数组元素,这样就组成了需要的斐波那契数组。对于奇数直接计算提出就行。

代码

  1. 1.function sumFibs(num) {
  2. 2. var fibsArray = [1, 1];
  3. 3. var retVal = 1;
  4. 4.
  5. 5. while (fibsArray[fibsArray.length - 1] <= num) {
  6. 6. if (fibsArray[fibsArray.length - 1] % 2) {
  7. 7. retVal += fibsArray[fibsArray.length - 1];
  8. 8. }
  9. 9. fibsArray.push(fibsArray[fibsArray.length - 2] + fibsArray[fibsArray.length - 1]);
  10. 10. }
  11. 11. fibsArray.pop(); /* 去除最后一个大于 num 的数 */
  12. 12.
  13. 13. return retVal;
  14. 14.}
  15. 15.
  16. 16.sumFibs(4);
  1. 另一个不用到数组的方法,该方法主要是针对该题的
  1. 1.function sumFibs(num) {
  2. 2. var fibo = [1, 1];
  3. 3. var oddSum = 2;
  4. 4.
  5. 5. while(true){
  6. 6. var item = fibo[0] + fibo[1];
  7. 7. if(num < item){
  8. 8. return oddSum;
  9. 9. }
  10. 10. if(item % 2){
  11. 11. oddSum += item;
  12. 12. }
  13. 13. fibo[0] = fibo[1];
  14. 14. fibo[1] = item;
  15. 15. }
  16. 16.}
  17. 17.
  18. 18.sumFibs(4);
  1.  

[Intermediate Algorithm] - Sum All Odd Fibonacci Numbers的更多相关文章

  1. Sum All Odd Fibonacci Numbers

    function sumFibs(num) { //return num; var arr = [1,1]; var add = 2; while(true){ var item = arr[0] + ...

  2. Sum All Odd Fibonacci Numbers-freecodecamp算法题目

    Sum All Odd Fibonacci Numbers 1.要求 给一个正整数num,返回小于或等于num的斐波纳契奇数之和. 斐波纳契数列中的前几个数字是 1.1.2.3.5 和 8,随后的每一 ...

  3. [Intermediate Algorithm] - Sum All Primes

    题目 求小于等于给定数值的质数之和. 只有 1 和它本身两个约数的数叫质数.例如,2 是质数,因为它只能被 1 和 2 整除.1 不是质数,因为它只能被自身整除. 给定的数不一定是质数. 提示 For ...

  4. codeforces 446C DZY Loves Fibonacci Numbers(数学 or 数论+线段树)(两种方法)

    In mathematical terms, the sequence Fn of Fibonacci numbers is defined by the recurrence relation F1 ...

  5. Codeforces 446-C DZY Loves Fibonacci Numbers 同余 线段树 斐波那契数列

    C. DZY Loves Fibonacci Numbers time limit per test 4 seconds memory limit per test 256 megabytes inp ...

  6. cf446C DZY Loves Fibonacci Numbers

    C. DZY Loves Fibonacci Numbers time limit per test 4 seconds memory limit per test 256 megabytes inp ...

  7. Codeforces Round #FF 446 C. DZY Loves Fibonacci Numbers

    參考:http://www.cnblogs.com/chanme/p/3843859.html 然后我看到在别人的AC的方法里还有这么一种神方法,他预先设定了一个阈值K,当当前的更新操作数j<K ...

  8. [CodeForces - 447E] E - DZY Loves Fibonacci Numbers

    E  DZY Loves Fibonacci Numbers In mathematical terms, the sequence Fn of Fibonacci numbers is define ...

  9. ACM学习历程—Codeforces 446C DZY Loves Fibonacci Numbers(线段树 && 数论)

    Description In mathematical terms, the sequence Fn of Fibonacci numbers is defined by the recurrence ...

随机推荐

  1. 2019 gplt团体程序设计天梯赛总结

    分很菜… 以后写题一定记得把题意理清楚了再开始写. 模拟题还是大坑,代码还是写得不够多,代码量一大就写bug. 补题 l1-8 估值一亿的AI核心代码 补题链接:https://pintia.cn/p ...

  2. LightOJ - 1232 - Coin Change (II)

    先上题目: 1232 - Coin Change (II)   PDF (English) Statistics Forum Time Limit: 1 second(s) Memory Limit: ...

  3. cogs 9. 中心台站建设。。。

    9. 中心台站建设 ★★☆   输入文件:zpj.in   输出文件:zpj.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述]     n个城市之间有通讯网络,从这n个城 ...

  4. Dockerfile分离构建LNMP环境部署wordpress

    最近忙着写自己的项目,也把一个站点的bbs论坛打算迁移到Docker中,测试没发现啥大问题.在单台上面的架构如下:(往后我们也是要讲到compose和swarm调度的慢慢来) 1.首先我们先安装一下d ...

  5. gcc指定头文件路径及动态链接库路径

    gcc指定头文件路径及动态链接库路径   本文详细介绍了linux 下gcc头文件指定方法,以及搜索路径顺序的问题.另外,还总结了,gcc动态链接的方法以及路径指定,同样也讨论了搜索路径的顺序问题.本 ...

  6. leetcode || 50、Pow(x, n)

    problem: Implement pow(x, n). Hide Tags Math Binary Search 题意:求x的n次幂 thinking: (1)最简单想到的是直观上的数学幂函数求法 ...

  7. scala并发编程原生线程Actor、Case Class下的消息传递和偏函数实战

    參考代码: import scala.actors._ case class Person(name:String,age:Int) class HelloActor extends Actor{ d ...

  8. 【cl】Unable to find executable for: taskkill

    十二月 02, 2015 5:16:56 下午 org.openqa.selenium.os.ProcessUtils killWinProcess警告: Process refused to die ...

  9. HDU 5218 The E-pang Palace (简单几何—2014广州现场赛)

    题目链接:pid=5128">http://acm.hdu.edu.cn/showproblem.php? pid=5128 题面: The E-pang Palace Time Li ...

  10. 使用register_chrdev注册字符设备

    1.2.2  使用register_chrdev注册字符设备 注册字符设备可以使用register_chrdev函数. int register_chrdev (unsigned int major, ...