Sum All Odd Fibonacci Numbers

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sum All Odd Fibonacci Numbers相关的知识,希望对你有一定的参考价值。

刚开始我看到Fibonacci我就直接写了计算斐波那契数列的算法后来发现掉坑里了,觉得挺有意思的就分享一下吧

题目

返回所有小于传入数值的斐波那契数列中的奇数之和,如果传入的数值是斐波那契数,那么它也应该参与求和。

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

例如,向 function 传入 4 应该返回 5,因为斐波那契数列中所有小于 4 的奇数是 1、1、3。

测试:

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


思路

仔细看了一下需求后发现只要求得出斐波那契数列中的奇数的和。我当时整个人都懵逼了,这坑爹劲就跟问我大学一次性交多少钱差不多...话不多说,既然明白了需求就开始动手了。

我们先列出斐波那契数的含义:F(n)=F(n-1)+F(n-2)+...+F(1),我们只需要提取小于传入值的斐波那契数列中奇数并相加就行。

声明一个总和变量,在计算斐波那契数列算法中插入三目运算符判断数列中当前的数值是否为奇数,如果是给总和变量加上去就好。

不死于话多开始动手写代码:

 

 1 function sumFibs(num) {
 2   var a=0,b=0,c=1,sum=0;
 3   for(var i=0;c<=num;i++){
 4     sum+=(c%2==1?c:0);
 5     a=b;
 6     b=c;
 7     c=a+b;
 8   }
 9   return sum;
10 }

 

解析一下上面的.......算了。除了有坑挺简单的一个算法,不解析了有不懂的可以留言问我,期待与你谈笑风生蛤蛤蛤

 

以上是关于Sum All Odd Fibonacci Numbers的主要内容,如果未能解决你的问题,请参考以下文章

Sum All Odd Fibonacci Numbers

LeetCode --- 1588. Sum of All Odd Length Subarrays 解题报告

LeetCode --- 1588. Sum of All Odd Length Subarrays 解题报告

LeetCode --- 1588. Sum of All Odd Length Subarrays 解题报告

ruby sum_even_odd.rb

Odd sum CodeForces - 797B