题目描述

有一分数序列: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.

码农谷 求前N项之和的更多相关文章

  1. JAVA 基础编程练习题20 【程序 20 求前 20 项之和】

    20 [程序 20 求前 20 项之和] 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20 项之和. 程序分析:请抓住分子与分母的变化规律. pac ...

  2. Java50道经典习题-程序20 求前20项之和

    题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和.分析:请抓住分子与分母的变化规律.三个连续分数之间的规律是:上两个分子之和等于第三个分数的分子 ...

  3. Java例题_20 前20项之和!

    1 /*20 [程序 20 求前 20 项之和] 2 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20 项之和. 3 程序分析:请抓住分子与分母的变 ...

  4. 求分数序列的前n项之和

    有一个分数序列 2/1,3/2,5/3,8/5,13/8,21/13,.... 求这个分数序列的前n项之和. 输入 测试数据有多组,其第一行为一个正整数k(0<k<=90),表示测试数据的 ...

  5. 7-49 求前n项的阶乘之和 (15 分)

    从键盘输入一个整数n,求前n项的阶乘之和,1+2!+3!+...+n!的和 输入格式: 输入一个大于1的整数.例如:输入20. 输出格式: 输出一个整数.例如:2561327494111820313. ...

  6. 数列的前N项之和

    时间限制: 1 Sec  内存限制: 128 MB 提交: 393  解决: 309 [提交][状态][讨论版] 题目描述 有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13.... ...

  7. 斐波那契数列第n项的值及前n项之和

    <script>// 算法题 // 题1:斐波那契数列:1.1.2.3.5.8.13.21...// // 一.斐波那契数列第n项的值 // // 方法一//递归的写法function a ...

  8. 求前n项正整数的倒数和

    求前n项正整数的倒数和 前n项正整数的和是一个发散的序列,学过高等数学的这个都知道.所以它没有一个精确的公式,但是近似的公式是有的: 1 + 1/2 + 1/3 + …… + 1/n ≍ ln n + ...

  9. 求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字

    思路:所求和为一个数字的前n项和,例如前4项和就是从4+44+444+4444,一直加到第4位,为4个4.所以可以用一个循环来表示每一项的数字,加到前几项就循环几次.然后将每项进行相加就可以求出总和. ...

随机推荐

  1. mongoDB数据库备份

    mongodump -h dbhost -d dbname -o dbdirectory 备份mongoDB数据库 重新打开 dos命令框 mongodump -h 127.0.0.1:27017 - ...

  2. 树莓派通过apt方式安装opencv库

    1.安装opencv     开始之前进行必要的更新工作. sudo apt-get update     安装opencv. sudo apt-get install libcv-dev     安 ...

  3. 线程中的wait() 与 锁的关系

    我们先看一段代码: /** * 计算输出其他线程锁计算的数据 * */ public class ThreadA { public static void main(String[] args) th ...

  4. Ubuntu下启动Apache的Rewrite功能

    在终端中执行 sudo a2enmod rewrite 指令后,即启用了 Mod_rewrite 模块. 另外,也可以通过将 /etc/apache2/mods-available/rewrite.l ...

  5. crm SSRS 报表 导出格式控制

    如果是使用的网页嵌入ReportView的方式的,可以在aspx上加入js来控制导出格式: <script src="js/jquery-1.9.0.js"></ ...

  6. java中json包的使用以及字符串,map,list,自定义对象之间的相互转换

    做一个map和字符串的转换,需要导入这些jar包,这是最基本的一些jar包. 经过多方尝试得出结论入下: 首先导入基本包:json-lib-2.2.3-jdk15.jar 如果没有这个jar包,程序是 ...

  7. java使用jacob将office转pdf

    1.此处代码是把office文档转换成pdf的工具类,在BS架构的产品中,我们可以使用基于JS的pdf插件显示pdf文档,但是前提IE需要按照adobe的pdf软件,对于非IE不用安装.2.可以基于f ...

  8. systemstate dump 介绍

    systemstate dump 介绍 By Janezhang-Oracle on 十二月 13, 2012 当数据库出现严重的性能问题或者hang了的时候,我们非常需要通过systemstate ...

  9. 解决 window server2008 r2 没有注册Ofiice组件的方法

    解决 window server2008  r2 没有注册Ofiice组件的方法   .NET下在用Microsoft.Office.Interop.Excel及word 操作Excel和Word时, ...

  10. 008 The Generics In JAVA

    泛型是JAVA的核心特型之一,我们先看一个例子: 没有使用泛型前,如下: import java.util.ArrayList; import java.util.List; public class ...