当前位置: 首页 > 知识库问答 >
问题:

斐波那契数字-只添加奇数-Javascript

薛承基
2023-03-14

所以我试图建立一个公式,将所有奇数斐波那契数加起来,包括一个给定的数。

例如:

  • 给定的数字是4。然后结果应该是5(奇数斐波那契数为1,1,3)

目前这是我的代码

function sumFibs(num) {
  var sum = 0;
  for(i=0,j=1,k=0; k<=num;i=j,j=x,k++) {
    x = i + j;
    if (x%2 !== 0) {
      sum +=x;
      if (sum >= sum) {
        break;
      }
    }
  }
  return sum;
}
sumFibs(4);

很明显,代码不起作用。如果我删除(如果总和

谢谢你的帮助。

共有3个答案

卫甫
2023-03-14

最小的方法做到这一点。

http://jsfiddle.net/PuneetChawla/gzr68ccv/

function sum()
{
    var a = 1;
    var b = 0;
    var c = 0;   
    var d = 4;       
    var temp = 1;

    while(c<d-1)
    {
        c = a+b;
        if(c%2 !=0){
        temp = temp+c;
        }
        b=a;
        a=c;
    }
    alert(temp);
}
娄利
2023-03-14

代码有点混乱。。。(什么是kfor?),元素的数量在问题定义中是不相关的,问题还涉及将斐波那契数求和到某个值,而不是求和到超过某个值的时间)。

解决办法可能是

var prev_fib = 0, cur_fib = 1;
var sum = 0;
while(cur_fib <= num) {
    if (cur_fib % 2 !== 0) {
        sum += cur_fib;
    }

    // Move on to next Fibonacci number
    var next_fib = cur_fib + prev_fib;
    prev_fib = cur_fib;
    cur_fib = next_fib;
}

选择较长的变量名可以帮助

简培
2023-03-14

您的代码对变量名称和声明有点混淆(总是尝试使用var声明)。这里有一个函数,可以得到您所需要的

function sumFibs(num) {
  var fib0 = 0;
  var fib1 = 1;
  var fib = 1;
  var sum = fib0;
  while ( fib <= num){
    if (fib % 2) {
        sum += fib1;
    }
    fib = fib0 + fib1;
    fib1 += fib0;
    fib0 = fib1 - fib0;
  }

  return sum;
}
 类似资料:
  • 主要内容:递归生成斐波那契数列,总结公元 1202 年,意大利数学家莱昂纳多·斐波那契提出了具备以下特征的数列: 前两个数的值分别为 0 、1 或者 1、1; 从第 3 个数字开始,它的值是前两个数字的和; 为了纪念他,人们将满足以上两个特征的数列称为斐波那契数列。 如下就是一个斐波那契数列: 1 1 2 3 5 8 13 21 34...... 下面的动画展示了斐波那契数列的生成过程: 图 1 斐波那契数列 很多编程题目要求我们输

  • 题目链接 NowCoder 题目描述 求斐波那契数列的第 n 项,n <= 39。 <!--1}\end{array}\right." class="mathjax-pic"/> --> 解题思路 如果使用递归求解,会重复计算一些子问题。例如,计算 f(4) 需要计算 f(3) 和 f(2),计算 f(3) 需要计算 f(2) 和 f(1),可以看到 f(2) 被重复计算了。 递归是将一个问题划分

  • Python3 实例 斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。 Python 实现斐波那契数列代码如下: 实例(Python 3.0+)# -*- coding: UTF-8 -*- # Filename : test.py # author by : www.runoob.com

  • 一、题目 写一个函数,输入n,求斐波那契数列的第n项值。 斐波那契数列的定义如下: 二、解题思路 按照上述递推式,可以使用循环或递归的方式获取第n项式。 三、解题代码 public class Test { /** * 写一个函数,输入n,求斐波那契(Fibonacci) 数列的第n项 * @param n Fibonacci数的项数 * @ret

  • 本文向大家介绍JavaScript中的斐波那契数列,包括了JavaScript中的斐波那契数列的使用技巧和注意事项,需要的朋友参考一下 斐波那契数是这样的数,使得该序列中前两个后的每个数字都是前两个的和。该系列从1、1开始。示例- 我们可以编写一个程序来生成nth,如下所示: 您可以使用以下方式进行测试: 这将给出输出- 让我们看看这些函数调用实际上是如何发生的- 当我们调用f(5)时,我们将调用

  • 我写了一个输出斐波那契数列的程序,这个程序对很小的数字工作得很好。当我将循环设置为序列的第10000个数字时,程序变得非常奇怪,开始输出负数和正数。 起初我认为这是因为我对数字使用了int类型,但后来我将其改为long,程序仍然输出相同的内容。我对java很陌生,所以我想要么是我的程序出了问题,要么是我错过了一个大于long并且不会输出负数的类型。 第91次:-624658365858767487

  • 本文向大家介绍检查数字是否为斐波那契数字或JavaScript,包括了检查数字是否为斐波那契数字或JavaScript的使用技巧和注意事项,需要的朋友参考一下 我们需要编写一个JavaScript函数,该函数接受一个数字并根据斐波那契数列是否包含该事实返回一个布尔值。 例如- 如果函数调用是这样的- 那么输出应该是- 现在,让我们为这个问题写一个递归解决方案- 示例 输出结果 控制台中的输出将为-

  • 本文向大家介绍PL / SQL中的斐波那契数字程序,包括了PL / SQL中的斐波那契数字程序的使用技巧和注意事项,需要的朋友参考一下 给定n个数字,任务是在PL / SQL中生成从0到n的斐波那契数字,其中斐波那契整数系列的形式为 其中,整数0和1将具有固定的空格,例如,在加上两个数字后, 斐波那契数列的序列F(n)的递归关系定义为- PL / SQL是一种Oracle产品,它是SQL和90年代