1-2 斐波那契数列的和

2019-05-10 06:05:25来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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;    }
  
   
 }


原文链接:https://www.cnblogs.com/fishshadow/p/10836425.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:用私有构造器或者枚举类型强化Singleton

下一篇:JVM运行时数据区域