Java学习之斐波那契数列实现

描述

一个斐波那契序列,F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2) (n>=2),根据n的值,计算斐波那契数F(n),其中0≤n≤1000。

输入

输入数据的第一行为测试用例的个数t,接下来为t行,每行为一个整数n(0≤n≤1000)。

输出

输出每个测试用例的斐波那契数F(n)。

样例输入

2

1

2

样例输出

1

1

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {    
        ArrayList<BigInteger> ar=new ArrayList<BigInteger>();
        BigInteger b1=new BigInteger("1");
        ar.add(b1);
        BigInteger b2=new BigInteger("1");
        ar.add(b2);
        Scanner sc=new Scanner(System.in);
        for(int i=2;i<1010;i++)
        {
            BigInteger a=ar.get(i-1);
            BigInteger b=ar.get(i-2);
            BigInteger c=a.add(b);
            ar.add(c);
        }
        int t=0;
        int n=sc.nextInt();
        while(true){
            if(t==n)
                break;
            int m=sc.nextInt();
            if(m==0)
                System.out.println(0);
            else 
                System.out.println(ar.get(m-1));
            t++;
        }    
    }    
}

像这种数据非常大的,用C或C++解决真是非常麻烦,不过用Java就比较简单了,BigInteger可以存无限大的数,比较好处理,第一次交上去竟然RE了,不明白,测试了好几次,突然想到如果输入0时数组的下标就变成-1了,于是,输入0加入判断,就过了