计算Fibonacci序列中的每个第三项

时间:2015-02-26 18:55:42

标签: fibonacci

int Fib1, Fib2, Fib3, FibSum;

Fib1 = 0;
Fib2 = 1;

while(Fib3 < 500000)
{
    Fib3 = Fib1 + Fib2;
    Fib1 = Fib2;
    Fib2 = Fib3;
    FibSum = Fib3 + Fib1;
}
printf("%d\n", FibSum);
return 0;

我想总结斐波那契系列的每三个学期,但我的答案是832040,一定是158905 ......任何帮助都会感激不尽!

3 个答案:

答案 0 :(得分:0)

这看起来像家庭作业,但嘿,我曾经也是一名学生。还在学习。

我在R中编写了以下代码,但您可以继续学习:

fib1 <- 0
fib2 <- 1
fib3 <- 0
fib_sum <- 0
placeholder <- 0

while(fib3 < 500000)
{
    placeholder <- placeholder + 1 
      f1 <- fib1
      f2 <- fib2
      f3 <- fib3
      fib3 <- fib1 + fib2
      fib1 <- fib2
      fib2 <- fib3

    if(placeholder %% 3 == 0) 
    { 
       fib_sum <- fib_sum + f1
       print(paste('postsum [placeholder, fib_sum, fib1, fib2, fib3]: ',
            placeholder, ' ', fib_sum, ' ', f1, ' ', f2, ' ', f3))
    }
}
print(fib_sum)

这会导致您的需求。课时间,因为这似乎是功课帮助。为了帮助你走上成为更好的程序员的道路,我建议在编程时采用脚手架的方法(只需在每行之后打印出所有内容)。

这将帮助您了解您的计划如何随着您的进展而发展。

以下是否有更好的解决方案?我确信有,但是因为我在编程时输出代码,所以我能够更快地得出结论。

希望有所帮助。

答案 1 :(得分:0)

有一个快捷方式来计算每个第三个斐波纳契数: 如果你想总结1,5,21,89,377 ...然后你总结你拥有的前两个数字(fibsum = 1 + 5)并计算并在循环中添加下面的数字如下。

fib1 = 1 
fib2 = 5
fib3 = 0
fibsum = fib1 + fib2
while fib3 < 500000 :
    fib3 = fib2*4+fib1
    if fib3 < 500000:
        fibsum += fib3
    fib1 = fib2
    fib2 = fib3
print fibsum 

答案 2 :(得分:0)

以下是一些应用HERE

中找到的公式的工作代码
double phi1 = (1 + sqrt(5)) / 2.0;
double phi2 = (1 - sqrt(5)) / 2.0;

int counter = 2;//Third term

int total = 0, term;

while (true) {
    term = (pow(phi1, counter) - pow(phi2, counter)) / (phi1 - phi2);

    if (term >= 500000)
        break;

    total += term;
    counter += 3;
}

printf("%d\n", total);
return 0;

编辑:刚刚意识到这是在一年之后发布的