我想为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;
}
}
答案 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));
}
显然迭代算法比递归算法更快......