题目描述

有一分数序列:2/1、3/2、5/3、8/5、13/8、21/13......。求出这个数列的前N项之和,保留两位小数。

输入描述

N

输出描述

数列前N项和

样例

输入:


输出:

16.48 

第一次code:  使用递归:  

 import java.util.*;
 import java.math.BigDecimal;

 public class jisuanrong
 {
     public static double SimpleAdding(int num)
     {
            if(num==1 || num == 0)
            {
                return 1;
            }
            else
            {
                return SimpleAdding(num-1)+SimpleAdding(num-2);
            }
       }
   public static double aa(int num)
   {
       if(num == 1)
       {
           return 2;
       }
       else
       {
           return SimpleAdding(num+1)/SimpleAdding(num);
       }
   }
   public static double bb(int num)
   {
       if(num == 1)
       {
           return 2;
       }
       else
       {
           return aa(num)+bb(num-1);
       }
   }
   public static void main (String[] args)
   {
     // keep this function call here
     Scanner s = new Scanner(System.in);
     BigDecimal   b   =   new   BigDecimal(bb(s.nextInt()));
     double   f1   =   b.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();
     System.out.println(f1);
   }
 }

时间效率非常低,当输入数为30时,耗费时间为62毫秒;输入35时,耗费时间为588毫秒;输入40时,耗费时间为5438毫秒。越往后,每增大1,耗费时间增长速率为70%。

==================================

第二次code:

使用了循环:
 import java.util.*; 

 public class Main
 {
   public static void main (String[] args)
   {
     Scanner s = new Scanner(System.in);
     String  str = String.format("%.2f",sum(s.nextInt()));
     System.out.println(str);
   }
   public static double sum(int num)
   {
        double i=2,k=1,n,s=0,m;
         for(n=1;n<=num;n++)
         {
             s+=i/k;
             m=i;
             i=i+k;
             k=m;
         }
       return s;
   }
 }

时间上耗费比递归要少的很多,但是计算到1474时,可以运算出结果,结果为2385.28,运算到1475时,结果为Infinity,运算到1476,结果是NAN.

最新文章

  1. 对部分Java名词的总结
  2. that-annoying-insert-problem-getting-data-into-the-db-using-dapper
  3. Android——显示单位px和dip以及sp的区别
  4. Flask框架学习笔记(API接口管理平台 V2.0)
  5. core--多线程
  6. 解决eclipse maven 项目重新下载包这个问题
  7. iOS开发中关于UIImage的知识点总结
  8. mahout源码KMeansDriver分析之五CIMapper初探
  9. python学习之路网络编程篇(第二篇)
  10. VueJs(11)---vue-router(进阶2)
  11. 抽奖大转盘 js代码
  12. leetcode 5 查找最长的回文子串
  13. pipeline
  14. oracle表查询优化
  15. .NET并行计算和并发5:多线程编程一般指导性原则
  16. 学习 Hadoop3.0 一、Hadoop3.0的安装与配置
  17. (第5篇)避免协作冲突--简单易接入的Zookeeper
  18. 4、Python中的类详解(0601)
  19. github issues的操作
  20. Scrum 7.0

热门文章

  1. systick优先级的理解
  2. Redis中7种集合类型应用场景&amp;redis常用命令
  3. NPOI高效匯出Excel
  4. angularjs之表达式
  5. POJ3352 Road Construction (双连通分量)
  6. 根据硬件配置后mapred-site.xml和yarn-site.xml
  7. 项目积累——SQL积累
  8. telnet登录路由器启动服务的shell脚本
  9. JS入门-慕课网
  10. Unity原生渲染方案