-5

我想为斐波那契数列函数编写一个 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;


}

}
4

2 回答 2

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);
}
于 2013-11-14T12:52:48.593 回答
0

斐波那契数列也可以递归实现。在这种情况下,它将是:

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));
}

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

于 2013-11-14T13:28:29.653 回答