Java——高效斐波那契数列

实现斐波那契数列,采用大数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));
	}
}

猜你喜欢

转载自blog.csdn.net/WU2629409421perfect/article/details/112299077