实现斐波那契数列,采用大数BigInteger库,效率要求要高
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in);
ArrayList<Integer> arrayList = new ArrayList<>();
while (scanner.hasNextInt()) {
int n = scanner.nextInt();
if(n==0) {
break;
}
arrayList.add(n);
}
//foreach方式效率没有for循环高
//for(int arr:arrayList) {
// System.out.println(fn(arr));
//}
int size=arrayList.size();
for(int i=0;i<size;i++) {
System.out.println(fb(arrayList.get(i)));
}
scanner.close();
}
//递归的方式效率低
public static BigInteger fn(int n) {
if (n==1 || n==2){
return new BigInteger("1");
}
return fn(n-1).add(fn(n-2));
}
//顺序求法,时间复杂度为O(n)
public static BigInteger fb(int n) {
BigInteger res = new BigInteger("0");
BigInteger a = new BigInteger("0");
BigInteger b = new BigInteger("1");
if(n==0) {
return new BigInteger("0");
}else if(n==1){
return new BigInteger("1");
}else {
for (int i = 2; i <= n; i++) {
res = a.add(b);
a = b;
b = res;
}
}
return new BigInteger(String.valueOf(res));
}
}