* 斐波那契数列的和
* @author fish shadow
* 输入两个正整数k1,k2(保证k1<=k2)。输出斐波那契数列的第k1项到第k2项的和。
* 测试案例:
* 输入:
* 3 6
*输出:
*18
*(解释2+3+5+8=18)
*
*原来代码中方法中参数类型为int,一次输入两个数,我用了String数组,然后又将String转换成int类型
*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; }
}