Fibonacci序列Java

时间:2013-11-14 12:40:41

标签: java

我想为Fibonacci序列函数编写一个java程序。它不能正常工作。有人可以帮我吗?它只适用于小数字

public static void main(String[] args)

{
    Scanner input = new Scanner(System.in);

    int x = input.nextInt();

    int e =fan(x);

            System.out.println(e);
    }

public static int fan(int e){ 
           int a =1;
           int b;
           int c = 0;

    for (int i=1; i<=e; i++) {
                b=c;
                c=b+a;
                a=b;
            }

        return c;


}

}

2 个答案:

答案 0 :(得分:3)

这是使用BigInteger实现的大数字。

public static String fan(int i) {
    BigInteger a = BigInteger.ZERO;
    BigInteger b = BigInteger.ONE;
    if(i==0) return a.toString();

    for (int f = 1; f < i; f++) {
        BigInteger temp = b;
        b = a.add(b);
        a = temp;
    }
    return b.toString();
}

public static void main(String[] args)

{
    Scanner input = new Scanner(System.in);

    int x = input.nextInt();

    String i = fan(x);

    System.out.println(i);
}

答案 1 :(得分:0)

Fibonacci序列也可以递归实现。在这种情况下,它将是:

public int fibonacci(int n)  {
   if( (n == 0) || (n == 1) )
      return n;
   else
      return( fibonacci(n - 1) + fibonacci(n - 2) );
}

在BigIntegers中它将是:

public BigInteger fibonacci(int n) {
   if (n == 0) return BigInteger.ZERO;
   if (n == 1) return BigInteger.ONE;
   return fibonacci(n - 1).add(fibonacci(n - 2));
}

显然迭代算法比递归算法更快......