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加入判断,就过了