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项的和相关推荐

  1. Python两种方式求多个数的最大公因数(HCF)和最小公倍数(LCM)

    Python两种方式求多个数的最大公因数(HCF)和最小公倍数(LCM) 最大公因数 1. 列表排序 2. 将列表分为两部分 3. 求最大公因数的质因子 4. 得到结果 5. 完整程序 最小公倍数 另 ...

  2. Java实现两种方式 RSA签名, RSA签名校验

    Java实现两种方式 RSA签名, RSA签名校验 通过 .keystore密钥文件实现 生成密钥文件 test2.keystore 相关使用 通过密钥生成器实现 Byte数据转换成 Hex字符串 相 ...

  3. 417,BFS和DFS两种方式求岛屿的最大面积

    想了解更多数据结构以及算法题,可以关注微信公众号"数据结构和算法",每天一题为你精彩解答.也可以扫描下面的二维码关注 给定一个包含了一些0和1的非空二维数组grid . 一个岛屿是 ...

  4. java 多线程两种方式_JAVA多线程实现的两种方式

    java多线程实现方式主要有两种:继承Thread类.实现Runnable接口 1.继承Thread类实现多线程 继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了 ...

  5. 线程Java的两种方式_多线程(java和guava两种方式):

    1.Java 当要使用线程去执行一个任务时,可以使用ExecutorService.submit(new Callable); 这样可以不影响其他的业务的执行,但是在线程中的异常不能捕获到,也不能知道 ...

  6. java的两种方式_java 两种方式的区别?

    成员函数方式 package cn.com.ch09; class FatherTest{ public void pet(String str){ System.out.println(str); ...

  7. hbase java api 两种方式

    NoSQL Hbase JAVA API 实例一 导入架包: <dependency><groupId>org.apache.hbase</groupId>< ...

  8. java中实现同步的两种方式:syschronized和lock的区别和联系

    转载自 http://www.cnblogs.com/xiohao/p/4151408.html Lock是java.util.concurrent.locks包下的接口,Lock 实现提供了比使用s ...

  9. 19、Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition

    Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...

最新文章

  1. android混淆和反编译
  2. WebAssembly 浏览器中运行c/c++模块
  3. es_分组-分页-TransportClient实现
  4. VMware vSphere 6简单部署---VCSA( vCenter Server Appliance)部署
  5. 关于成为一名优秀的软件测试工程师
  6. 运用代码管理段来提升开发效率
  7. java web 项目打成war包部署到服务器上
  8. java使用jeids实现redis2.6的list操作(4)
  9. 深度学习概述_深度感测框架概述
  10. 计算机网络教程三次握手,计算机网络(二) TCP协议的三次握手
  11. jackson 忽略多余字段_Java进阶学习:JSON解析利器JackSon
  12. CDA数据分析师教材与题库
  13. 椭球面的c语言方程,喷油嘴椭球面手工编程方法的实现
  14. walking机器人仿真教程-应用-多点导航结合闹铃播放实现移动闹钟
  15. 阿里修炼秘籍,如何快速成长的几个技巧?
  16. 初中物理浮力教学思考推荐
  17. 《软件随想录-Joel on Software》书摘
  18. 图:两点之间的最短距离
  19. 小花经过春雨的一番滋润
  20. 【Debug记录】terminate called after throwing an instance of ‘xxxxxx‘

热门文章

  1. Python 的guppy模块检测内存
  2. linux中dd命令详解,Linux中DD命令详解
  3. 阴阳师手游御魂怎么强化 御魂强化方法详解
  4. HTML连载42-清空默认边距、文字行高
  5. “大”领时代·“云”起未来 ——芝诺数据迎接四川外国语大学国商师生参观学习...
  6. awvs扫描器扫描web漏洞
  7. 初学者之CSS学习(六)盒子模型
  8. CSS选择器 优先级
  9. 怎样选择结婚对象(正常人)
  10. 手机html根据手机分辨率网页文字大小自适应