package Recursive;
import java.math.BigInteger;
import java.util.Scanner;
public class Exercise18_02 {
public static void main(String[] args) {
System.out.print("Enter an index for fibonacci number: ");
int index = new Scanner(System.in).nextInt();
if (index < 0)
System.out.println("Invalid index!");
else
System.out.println("The fibonacci number at index " + index + " is " + fib(BigInteger.valueOf(index)));
}
/** 返回斐波那契数 */
public static BigInteger fib(BigInteger index) {
BigInteger f0 = BigInteger.ZERO; //第一个数
BigInteger f1 = BigInteger.ONE; //第二个数
BigInteger result = BigInteger.ZERO; //结果
if (index.equals(BigInteger.ZERO)) //如果等于0
return f0;
else if (index.equals(BigInteger.ONE)) //如果等于1
return f1;
else { //否则
for (BigInteger i = BigInteger.ONE; i.compareTo(index) == -1; i = i.add(BigInteger.ONE)) {
result = f0.add(f1);
f0 = f1;
f1 = result;
}
return result;
}
}
}