A1044. Fibonacci数列求和

问题描述
  定义Fibonacci数列f(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
样例输出
1
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));
        }
    }

}

 

posted @ 2018-02-07 19:49  henu小白  阅读(249)  评论(0编辑  收藏  举报