Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何计算斐波那契序列_Java_Math - Fatal编程技术网

Java 如何计算斐波那契序列

Java 如何计算斐波那契序列,java,math,Java,Math,我在下面编写了斐波那契序列的代码。我遇到的问题是,当我对JUnit测试代码运行它时,只有一个问题得到了解决。我会在下面告诉你 这是我的密码 import java.util.ArrayList; public class ResitCode { public int Fib_No(int position) { position = 10; ArrayList<Integer> a = new ArrayList<Integer>(); a.a

我在下面编写了斐波那契序列的代码。我遇到的问题是,当我对JUnit测试代码运行它时,只有一个问题得到了解决。我会在下面告诉你

这是我的密码

import java.util.ArrayList;

public class ResitCode {

public int Fib_No(int position) {
    position = 10;
    ArrayList<Integer> a = new ArrayList<Integer>();
    a.add(0);
    a.add(1);
      System.out.println(position); 
    for (int i = 1; i <= position; ++i) {

        System.out.println(a.get(0) + " ");
        int sumofBoth = a.get(0) + a.get(1);
        int a1 = a.get(0);
        int a2 = a.get(1);
        a1 = a2;
        a2 = sumofBoth;


    }

    return 0 ;

}
当我针对这个问题运行它时,只有一个问题得到了解决,如果有人能告诉我我做错了什么,以及如何让它通过所有测试,我将不胜感激。
我想你一定要这样做。你的循环什么也没做

int a = 0, b=1, c;
      System.out.println(position); 
    for (int i = 1; i <= position; ++i) {
       System.out.println(a + " ");
       c=a+b;
       a=b;
       b=c;
    }
inta=0,b=1,c;
系统输出打印项次(位置);

对于(int i=1;i而言,
Fib\u No
函数中有两个错误:

1) 您不返回结果。将
返回0
替换为
返回a.get(1)

2) 在for循环中,您处理的是临时变量,而不是引用。因此,在循环内完成的赋值没有效果。要替换以前的值,请使用:

    int sumofBoth = a.get(0) + a.get(1);
    a.set(0,a.get(1));
    a.set(1,sumofBoth);

注意:由于您只处理两个整数,因此使用列表结构会使代码更慢,更难阅读。考虑使用两个变量<代码> int a=0;int b=1

很好。。代码中只有一个return语句:
return0。除了
0
,它将如何返回任何内容?@GBlodgett是的,你是对的,那是个错误。
    int sumofBoth = a.get(0) + a.get(1);
    a.set(0,a.get(1));
    a.set(1,sumofBoth);