gpt4 book ai didi

java - 编写斐波那契数列的方法

转载 作者:行者123 更新时间:2023-12-01 14:37:03 24 4
gpt4 key购买 nike

我正在尝试编写一个 for 循环,调用 fibonacci 方法并打印 fibonacci 序列中的前 25 个数字。问题是我对如何正确地做到这一点有点困惑。

我有点困惑,当 run 方法中的 for 循环调用 fibonacci 方法时,fibonacci 方法内的值在 for 循环到达传递后是否会重置?例如,在 for 循环的第一遍期间,i = 0 并且 int a 和 int b 的值在斐波那契方法内部发生变化。斐波那契方法中的值是否会在下一次循环时重置?

import acm.program.*;

public class Fibonacci extends ConsoleProgram{
private void run(){

for(int i = 0; i <= 25; i++){
fibonacci(i);
println(fibonacci(i));
}


}
private int fibonacci(int n){
int n = 0;

int a = 0;
int b = 1;

while (n < 25);

int c = a + b;
a = b;
b = c;

}
return(a);

}

最佳答案

您在两个不同的地方循环 - run()fibonacci()。其中只有一个地方应该关心循环,另一个地方应该关心计算 Fibonacci(n)。

我们可以做的就是从fibonacci中删除循环,而只依赖外部的循环。另外,我们将删除该语句 int n = 0,因为它会隐藏您传入的参数。

最后,我们将创建两个新的静态变量 ab,以便在此实例中保留这些变量的值。如果您不这样做,那么您就必须依靠递归或其他一些方法来提供 ab 的适当值。

我不完全确定为什么需要扩展 ConsoleProgram,但我暂时将其保留。

所以,它应该是这样的。

public class Fibonacci extends ConsoleProgram {
static int a = 0;
static int b = 1;

public void run() {
for(int i = 0; i <= 25; i++) {
// Print the call to fibonacci(i) with every iteration.
}
}

private int fibonacci(int n) {
int c = a + b;
a = b;
b = c;
return c;
}
}

关于java - 编写斐波那契数列的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16390921/

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