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 ......任何帮助都会感激不尽!
答案 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;
编辑:刚刚意识到这是在一年之后发布的