码农谷 求前N项之和
题目描述
有一分数序列: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项之和的更多相关文章
- JAVA 基础编程练习题20 【程序 20 求前 20 项之和】
20 [程序 20 求前 20 项之和] 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20 项之和. 程序分析:请抓住分子与分母的变化规律. pac ...
- Java50道经典习题-程序20 求前20项之和
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和.分析:请抓住分子与分母的变化规律.三个连续分数之间的规律是:上两个分子之和等于第三个分数的分子 ...
- Java例题_20 前20项之和!
1 /*20 [程序 20 求前 20 项之和] 2 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20 项之和. 3 程序分析:请抓住分子与分母的变 ...
- 求分数序列的前n项之和
有一个分数序列 2/1,3/2,5/3,8/5,13/8,21/13,.... 求这个分数序列的前n项之和. 输入 测试数据有多组,其第一行为一个正整数k(0<k<=90),表示测试数据的 ...
- 7-49 求前n项的阶乘之和 (15 分)
从键盘输入一个整数n,求前n项的阶乘之和,1+2!+3!+...+n!的和 输入格式: 输入一个大于1的整数.例如:输入20. 输出格式: 输出一个整数.例如:2561327494111820313. ...
- 数列的前N项之和
时间限制: 1 Sec 内存限制: 128 MB 提交: 393 解决: 309 [提交][状态][讨论版] 题目描述 有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13.... ...
- 斐波那契数列第n项的值及前n项之和
<script>// 算法题 // 题1:斐波那契数列:1.1.2.3.5.8.13.21...// // 一.斐波那契数列第n项的值 // // 方法一//递归的写法function a ...
- 求前n项正整数的倒数和
求前n项正整数的倒数和 前n项正整数的和是一个发散的序列,学过高等数学的这个都知道.所以它没有一个精确的公式,但是近似的公式是有的: 1 + 1/2 + 1/3 + …… + 1/n ≍ ln n + ...
- 求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字
思路:所求和为一个数字的前n项和,例如前4项和就是从4+44+444+4444,一直加到第4位,为4个4.所以可以用一个循环来表示每一项的数字,加到前几项就循环几次.然后将每项进行相加就可以求出总和. ...
随机推荐
- vim使用快捷键
vim使用快捷键 索引 1. 关于Vim 1.1 Vim的几种模式 2. 启动Vim 3. 文档操作 4. 光标的移动 4.1 基本移动 4.2 翻屏 4.3 标记 5. 插入文本 5.1 基本插入 ...
- eclipse中输入@符号自动提示Annotation
将Eclipse中Content Assist中的Auto activation for java里.的后面加上@符号即可
- samba共享修改匿名用户为非nobody
samba共享修改匿名用户为非nobody 1)linux的samba用户,如果开启匿名用户登陆共享权限,security 设置为 share ,配置如下:[root@centos69:~]$grep ...
- 第2章 Posix IPC
2.1 概述 Poxix IPC包含:Posix消息队列.Posix信号量.Posix共享内存 2.2 IPC名字 Posix 消息队列.Posix信号量.Posix共享内存这三种Posix IPC都 ...
- C++开源hash项目sparsehash
源码地址: https://github.com/sparsehash/sparsehash
- DedeTag Engine Create File False提示的种种原因及解决方法
DedeTag Engine Create File False提示的种种原因及解决方法 第一种情况:站点.文件夹权限不足造成无法建立文件 这种情况的出现,一方面可能是Apache设置的读写权限较严格 ...
- 使用Nlog记录日志到数据库
Nlog是一个很不错的.NET日志记录组件,它可以将日志输出到控件台,保存到文本,也可以很方便的记录到数据库中. 可以在这里下载Nlog:http://nlog-project.org/ 这里分享一下 ...
- spring声明式事务
一.传统事务 二.通过spring配置完成事务: 1.配置spring,加入spring的jar包,加入spring的配置文件 2.配置数据源,这里使用c3p0,加入c3p0 jar包和mysql数据 ...
- [Java] File类的常用操作
package test.file; import java.io.File; import java.io.IOException; public class TestFile { public s ...
- char 汉字
Unicode/UCS总结: UCS和Unicode使用最大32bit来表示字符(它的范围很大,但不一定全使用,常使的是UCS-2),它用2~4个字节的空间描述了已知的接近全部的字符(并且仍在更新,还 ...