A1044. Fibonacci数列求和
问题描述
定义Fibonacci数列f(n):
f[1]=f[2]=1;
f[i]=f[i-1]+f[i-2]
输入n(n<=20),请你求出Fibonacci数列前n项的和。
f[1]=f[2]=1;
f[i]=f[i-1]+f[i-2]
输入n(n<=20),请你求出Fibonacci数列前n项的和。
输入格式
每行一组数据。每组数据仅包含一个数n。如果n=0,表示输入文件的结束。
输出格式
对于每组数据,输出相应的答案。
样例输入
1
4
0
4
0
样例输出
1
7
7
package www.tsinsen.com; import java.util.ArrayList; import java.util.Scanner; public class A1044 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); int[] arr=new int[21]; int[] sums=new int[21]; arr[1]=1; arr[2]=1; for(int i=3;i<arr.length;i++) { arr[i]=arr[i-1]+arr[i-2]; } int sum=arr[1]; sums[1]=arr[1]; for(int i=2;i<arr.length;i++) { sum+=arr[i]; sums[i]=sum; } ArrayList<Integer> list=new ArrayList<Integer>(); int n=scan.nextInt(); while(n!=0) { list.add(sums[n]); n=scan.nextInt(); } for(int i=0;i<list.size();i++) { System.out.println(list.get(i)); } } }