gpt4 book ai didi

java - Fibonacci - 为什么这给我错误的计算?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:44:39 25 4
gpt4 key购买 nike

问题是...

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

我已经编写了一个应该执行此操作的代码,粘贴在下面:

public class Main {
public static void main(String[] args) {
// Setting up the variables. sumF3 will be printed at the end.
int sumF1 = 1;
int sumF2 = 2;
int sumF3 = 0;
// If loops to cancel out the odd numbers, but let them be added to sumF2 etc anyway.
while(4000000 > sumF1) {
if (sumF1 % 2 == 0) {
sumF3 += sumF1;
}
if (sumF2 % 2 == 0) {
sumF3 += sumF2;
}
// Normal fibonacci sequence.
sumF1 += sumF1 + sumF2;
sumF2 += sumF1 + sumF2;
}
System.out.println(sumF3);
}
}

我首先用两个 if 循环过滤掉奇数,然后将其添加到 sumF3。它将继续添加到 sumF3 中,直到它达到 400 万以下。当 while 循环停止时,它应该打印出“4613732”,但它打印出不同的东西 (4194302)。我觉得这里有一个逻辑缺陷。

最佳答案

您的斐波那契数列中的表达式不正确。您正在执行以下操作:

// Normal fibonacci sequence.
sumF1 += sumF1 + sumF2;
sumF2 += sumF1 + sumF2;

本质上是这样做的:

sumF1 = sumF1+sumF1+sumF2,sumF2 = sumF2+sumF1+sumF2。

如果将表达式更改为以下内容,您应该会得到正确答案:

// Normal fibonacci sequence.
sumF1 += sumF2;
sumF2 += sumF1;

+= 运算符将表达式的值与变量的值相加,并将结果赋给变量。您正在混合中添加一个额外的变量,这会影响您的结果。

关于java - Fibonacci - 为什么这给我错误的计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48117635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com