首页 > 其他 > 详细

1-2 斐波那契数列的和

时间:2019-05-09 11:17:34      阅读:253      评论:0      收藏:0      [点我收藏+]
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 斐波那契数列的和

原文:https://www.cnblogs.com/fishshadow/p/10836425.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!