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

标签 java

我正在尝试编写一个 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/

相关文章:

JAVA - 存储固定大小的图像blob

java - 在 Java 中扭曲

java - 在数组中找到 3 个或更多相同的对象?

java - 动画 .GIF 和 Java

java - 如何在 Jquery Jtable 中绑定(bind) json 嵌套对象?

java - sbt 在启动时抛出错误

java - 如何从 *ngFor 中的服务加载实体

Java:验证 TAR 文件

java - 简单的Java正则表达式

java - 如何从 STUN 请求获取外部 IP 地址和外部端口号?