美文网首页
js 实现斐波纳契 奇数之和

js 实现斐波纳契 奇数之和

作者: web_newbie | 来源:发表于2018-03-10 09:47 被阅读0次

1.问题描述:

给一个正整数num,返回小于或等于num的斐波纳契奇数之和。
斐波纳契数列中的前几个数字是 1、1、2、3、5 和 8,随后的每一个数字都是前两个数字之和。
例如,sumFibs(4)应该返回 5,因为斐波纳契数列中所有小于4的奇数是 1、1、3;

2.思路:先实现一个斐波那契数列的函数(不要使用递归方法实现,会造成函数调用栈溢出),可用数组的方式;由于斐波那契数列的前两项比较特殊都为1,可提取a =1,b = 1,具体实现如下:

function Fibs(num) {
   var   a = 1,b = 1;
   var arr = [1,1],i = 2;//arr用来保存斐波那契数组,i设置为2跳过前两个1
   while(i < num){
      a = [b,b = a + b][0];//根据运算符优先级,先执行b = a + b,然后数组索引a得到了b的值
     //可用es6中的解构赋值运算[a,b] = [b,a]来实现
      arr.push(b);
      i++;
  }
return arr;
}
Fibs(10)l//得到[1, 1, 2, 3, 5, 8, 13, 21, 34, 55];

然后就简单了,遍历得到的数组,把小于num的奇数相加;

function sumFibs(num){
  var cur = 0,total = 0;
  var arr = Fibs(num);
  for(var j = 0,len = arr.length;j<len;j++ ){
     cur = arr[j];
     if(cur > num ) break;
     if(cur % 2 == 1) total += cur;
  }
  return total;
}
sumFibs(4);//  5

3.函数优化:

function sumFibs(num) {
  var total = 1,i = 0,
      a = 0,b = 1;
  while(i < num){
    a = [b,b = a + b][0];
    if(b <= num && b % 2 == 1) total += b;
    i++;
  }
  return total;
}

相关文章

  • js 实现斐波纳契 奇数之和

    1.问题描述: 给一个正整数num,返回小于或等于num的斐波纳契奇数之和。斐波纳契数列中的前几个数字是 1、1、...

  • Sum All Odd Fibonacci Numbers

    给一个正整数num,返回小于或等于num的斐波纳契奇数之和。 斐波纳契数列中的前几个数字是 1、1、2、3、5 和...

  • FCC-Sum All Odd Fibonacci Number

    给一个正整数num,返回小于或等于num的斐波纳契奇数之和。斐波纳契数列中的前几个数字是 1、1、2、3、5 和 ...

  • FreeCodeCamp记录12

    给一个正整数num,返回小于或等于num的斐波纳契奇数之和。 斐波纳契数列中的前几个数字是 1、1、2、3、5 和...

  • 366. 斐波纳契数列

    查找斐波纳契数列中第 N 个数。所谓的斐波纳契数列是指: 斐波纳契数列的前10个数字是: 0, 1, 1, 2, ...

  • Python实现斐波拉契数列和冒泡排序

    一、斐波拉契数列 斐波拉契数列:从第3项开始,每一项都等于前两项之和。 递归实现 函数实现 二、冒泡排序法 冒泡排...

  • JavaScript|斐波纳契数列

    斐波纳契数列定义: 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波...

  • 我的python学习笔记-第八天

    先编个小程序 我们尝试来写一个斐波纳契数列。先说下啥是斐波纳契数列。事情是这样的:斐波那契数列(Fibonacci...

  • 斐波那契数,计算与分析

    什么是斐波那契数列? 斐波那契数列(Fibonacci sequence)是以意大利数学家列昂纳多·斐波那契的名字...

  • 尾递归优化的斐波那契数列

    斐波那契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(...

网友评论

      本文标题:js 实现斐波纳契 奇数之和

      本文链接:https://www.haomeiwen.com/subject/vzsvfftx.html