Java练习:两种方式求1+1/2!+1/3!+1/4!+...前20项的和、用for,while,do-while分别实现1+1/2!+1/3!+1/4!+...前20项的和
Java两种方式求 1+1/2!+1/3!+1/4!+... 前20项的和:
感叹号 !是阶乘的意思,如 2! 、3! 、4! 分别是:1*2 、 1*2*3 、1*2*3*4
第一种算法,如下代码演示:
double sum=0,number=1;
for(int i=1;i<=20;i++) {
number= number * (1.0/i) ;
sum += number;
}
System.out.println("使用for循环计算的sum="+sum);
// 结果输出:使用for循环计算的sum=1.7182818284590455
第二种算法,如下代码演示:
double sum=0,number=1,a=1;
for(int i=1;i<=20;i++) {
a = 1.0 / i ;
number *= a ;
sum=sum+number;
}
System.out.println("使用for循环计算的sum="+sum);
// 结果输出:使用for循环计算的sum=1.7182818284590455
特别注意,防止出现 1+1/2+1/3+1/4+... 前20项的和 的情况:
如下代码:
double sum=0,a=1;
for(int i=1;i<=20;i++) {
a= 1.0 / i ;
double number = 1;
number *= a ;
sum=sum+number;
}
System.out.println("使用for循环计算的sum="+sum);
// 结果输出:使用for循环计算的sum=3.597739657143682
在以上代码中,number = 1 是在for循环体中进行声明的,则每次循环的时候都会重新声明一次number,即每次循环number的值都是从 1 开始的,所以就出现了1+1/2+1/3+1/4+... 前20项的和 的情况;
用for、while、do-while分别实现1+1/2!+1/3!+1/4!+...前20项的和
for 进行实现:
double sum=0,number=1;
for(int i=1;i<=20;i++) { number= number * (1.0/i) ;sum += number;
}
System.out.println("使用for循环计算的sum="+sum);
while 进行实现:
double sum = 0,number = 1,i = 1 ;while (i <= 20) {number = number * (1.0 / i);sum += number;i++;}System.out.println("使用for循环计算的sum="+sum);
do-while 进行实现:
double sum = 0, number = 1, i = 1;do{number = number * (1.0 / i);sum += number;i++;}while (i <= 20);System.out.println("使用for循环计算的sum="+sum);
编程练习扩展:
一、求 1!+ 2!+ 3!+ 4!+....+ 20! 的和;
实现代码如下: 代码输出: 1!+2!+3!+...+20!等于=268040729
int sum = 0 ,number = 1;for(int i=1;i<=20;i++){number *= i;sum += number;}System.out.println(" 1!+2!+3!+...+20!等于="+sum);
二、求满足 1+2+3+4+...+n<8888 的最大正整数 n ;
实现代码如下: 代码输出: 1+2+3+4+...+n<8888的最大正整数为=133
for语句实现
int sum = 0,n = 1;for(int i=1;i<=n;i++){if(sum<8888){sum += i;}if(sum>=8888){System.out.println("1+2+3+4+...+n<8888的最大正整数为="+n);break;}n++;}
while语句实现
int n=1;long sum=0;while(true) {sum=sum+n;n++;if(sum>=8888) {System.out.println("1+2+3+4+...+n<8888的最大正整数为="+(n-1));break;}}
Java练习:两种方式求1+1/2!+1/3!+1/4!+...前20项的和、用for,while,do-while分别实现1+1/2!+1/3!+1/4!+...前20项的和相关推荐
- Python两种方式求多个数的最大公因数(HCF)和最小公倍数(LCM)
Python两种方式求多个数的最大公因数(HCF)和最小公倍数(LCM) 最大公因数 1. 列表排序 2. 将列表分为两部分 3. 求最大公因数的质因子 4. 得到结果 5. 完整程序 最小公倍数 另 ...
- Java实现两种方式 RSA签名, RSA签名校验
Java实现两种方式 RSA签名, RSA签名校验 通过 .keystore密钥文件实现 生成密钥文件 test2.keystore 相关使用 通过密钥生成器实现 Byte数据转换成 Hex字符串 相 ...
- 417,BFS和DFS两种方式求岛屿的最大面积
想了解更多数据结构以及算法题,可以关注微信公众号"数据结构和算法",每天一题为你精彩解答.也可以扫描下面的二维码关注 给定一个包含了一些0和1的非空二维数组grid . 一个岛屿是 ...
- java 多线程两种方式_JAVA多线程实现的两种方式
java多线程实现方式主要有两种:继承Thread类.实现Runnable接口 1.继承Thread类实现多线程 继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了 ...
- 线程Java的两种方式_多线程(java和guava两种方式):
1.Java 当要使用线程去执行一个任务时,可以使用ExecutorService.submit(new Callable); 这样可以不影响其他的业务的执行,但是在线程中的异常不能捕获到,也不能知道 ...
- java的两种方式_java 两种方式的区别?
成员函数方式 package cn.com.ch09; class FatherTest{ public void pet(String str){ System.out.println(str); ...
- hbase java api 两种方式
NoSQL Hbase JAVA API 实例一 导入架包: <dependency><groupId>org.apache.hbase</groupId>< ...
- java中实现同步的两种方式:syschronized和lock的区别和联系
转载自 http://www.cnblogs.com/xiohao/p/4151408.html Lock是java.util.concurrent.locks包下的接口,Lock 实现提供了比使用s ...
- 19、Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...
最新文章
- android混淆和反编译
- WebAssembly 浏览器中运行c/c++模块
- es_分组-分页-TransportClient实现
- VMware vSphere 6简单部署---VCSA( vCenter Server Appliance)部署
- 关于成为一名优秀的软件测试工程师
- 运用代码管理段来提升开发效率
- java web 项目打成war包部署到服务器上
- java使用jeids实现redis2.6的list操作(4)
- 深度学习概述_深度感测框架概述
- 计算机网络教程三次握手,计算机网络(二) TCP协议的三次握手
- jackson 忽略多余字段_Java进阶学习:JSON解析利器JackSon
- CDA数据分析师教材与题库
- 椭球面的c语言方程,喷油嘴椭球面手工编程方法的实现
- walking机器人仿真教程-应用-多点导航结合闹铃播放实现移动闹钟
- 阿里修炼秘籍,如何快速成长的几个技巧?
- 初中物理浮力教学思考推荐
- 《软件随想录-Joel on Software》书摘
- 图:两点之间的最短距离
- 小花经过春雨的一番滋润
- 【Debug记录】terminate called after throwing an instance of ‘xxxxxx‘