1. 程式人生 > >1-2 斐波那契數列的和

1-2 斐波那契數列的和

ack rgs 原來 [] fish 一次 nbsp public string數組

import java.util.Scanner; /**
* 斐波那契數列的和
* @author fish shadow
* 輸入兩個正整數k1,k2(保證k1<=k2)。輸出斐波那契數列的第k1項到第k2項的和。
* 測試案例:
* 輸入:
* 3 6
*輸出:
*18
*(解釋2+3+5+8=18)
*
*原來代碼中方法中參數類型為int,一次輸入兩個數,我用了String數組,然後又將String轉換成int類型 *註意:未進行k1<=k2的判斷 *參考代碼:https://blog.csdn.net/brycegao321/article/details/79849830
*String轉int參考: https://zhidao.baidu.com/question/38519769.html

*
*/

public class Test_1_2 {
  public static void main(String[] args) throws Exception {
    Scanner sc = new Scanner(System.in);
    String str1 =sc.nextLine();
    String[] all=str1.split(" ");//用字符串數組來接受輸入的多個數據,分隔符使用空格

        String n1=all[0];
        String n2=all[1];
      try {
        int a = Integer.parseInt(n1);

        int b = Integer.parseInt(n2);
        int result = fabonacciSum(a,b);
         System.out.println(result);
      } catch (NumberFormatException e) {
        e.printStackTrace();
      }
    }
private static int fabonacciSum(int i, int j) {
if (i > j || i < 0 || j < 0) {
return -1;
}
if (j < 2) {
return j;
}
int[] array = new int[j+1];
int total;
if (i < 2) { //下面的for循環是從下標2開始的
total = 1;
} else {
total = 0;
}
array[0] = 0;
array[1] = 1;
for (int k = 2; k <= j; k++) {
array[k] = array[k-1] + array[k-2];
if (k >= i) {
total += array[k];
}
}
return total; }


}

1-2 斐波那契數列的和