编写Java程序,使用while循环语句计算1+1/2!+1/3!…1/20!之和.

编写Java程序,使用while循环语句计算1+1/2!+1/3!…1/20!之和.~

呵呵,你知道阶乘的,他其实就是这样的,比如1/24就可以写成(1/2)*(1/12)这样吧,a=a*(1/i)就可以理解成这样子,第一个是1,第二个就是1*(1/2)结果就是0.5下来呢,就是0.5*(1/3)这个呢就等于是(1/2)*(1/3)也就等于是1/3的阶剩了呀,你说对不,一直循坏到结果,这样理解了吧.
在不理解可以问我,我在线.

package practice;
/*
使用while循环 计算1+1/2!+1/3!+...+1/20!
a用于存储前n个阶乘分之一
sum 用于累加和
*/
public class WhileDemo {
public static void main(String[] args) {
/*i=i+1的简写形式是i+=1;但是二者有本质的区别:
如果 i是short类型,+=:会自动类型提升,而=则不会
所以
short i=0;
i+=1;//编译通过,类型提升
i=i+1;//编译失败,因为这是赋值操作,
i是short类型,而1是默认是int类型
*/
double sum = 0,a = 1;//因为是分式,所以用double类型
int i = 1;
while(i <= 20) {
sum +=a;
i++;
a*=(1.0/i);//使a的值发生变化
System.out.println(a*i);
}
System.out.println(sum);
System.out.println("_________________________");
ForDemo.main(args);
System.out.println(Text.jieCheng(4));
}
}
class ForDemo{
public static void main(String[] args) {
double sum = 0,a = 1;
for (int i = 1; i <=20; i++) {
sum +=a;
a*=(1.0/i);
System.out.println(a*i);
}
sum--;

System.out.println(sum);
}
}
//递归做法:效率不高,判断影响性能
class Text{
public static void main(String[] args){
// double sum=0.0,count=1.0;
// while(count<=20.0){
// sum+=1.0/(jieCheng(count));
// count++;
// }
// System.out.print(sum);
}
public static long jieCheng(long sum){
/* for(int i=1;i<=c;i++){
sum*=i;
}*/
if(sum<=1)return 1;
return sum*jieCheng(sum-1);
}
}

  • package practice;  

  • /* 

  • 使用while循环 计算1+1/2!+1/3!+...+1/20! 

  • a用于存储前n个阶乘分之一 

  • sum 用于累加和 

  • */  

  • public class WhileDemo {  

  • public static void main(String[] args) {  

  • /*i=i+1的简写形式是i+=1;但是二者有本质的区别: 

  • 如果 i是short类型,+=:会自动类型提升,而=则不会 

  • 所以  

  • short i=0; 

  • i+=1;//编译通过,类型提升 

  • i=i+1;//编译失败,因为这是赋值操作, 

  • i是short类型,而1是默认是int类型 

  • */  

  • double sum = 0,a = 1;//因为是分式,所以用double类型  

  • int i = 1;  

  • while(i <= 20) {  

  • sum +=a;  

  • i++;  

  • a*=(1.0/i);//使a的值发生变化  

  • System.out.println(a*i);  

  • }  

  • System.out.println(sum);  

  • System.out.println("_________________________");  

  • ForDemo.main(args);  

  • System.out.println(Text.jieCheng(4));  

  • }  

  • }  

  • class ForDemo{  

  • public static void main(String[] args) {  

  • double sum = 0,a = 1;  

  • for (int i = 1; i <=20; i++) {  

  • sum +=a;  

  • a*=(1.0/i);  

  • System.out.println(a*i);  

  • }  

  • sum--;  

  • System.out.println(sum);  

  • }  

  • }  

  • //递归做法:效率不高,判断影响性能  

  • class Text{  

  • public static void main(String[] args){  

  • //       double sum=0.0,count=1.0;  

  • // while(count<=20.0){  

  • // sum+=1.0/(jieCheng(count));  

  • // count++;  

  • // }  

  • // System.out.print(sum);  

  • }  

  • public static long  jieCheng(long sum){  

  • /* for(int i=1;i<=c;i++){ 

  • sum*=i; 

  • }*/  

  • if(sum<=1)return 1;  

  • return sum*jieCheng(sum-1);  

  • }  

  • }  



呵呵,你知道阶乘的,他其实就是这样的,比如1/24就可以写成(1/2)*(1/12)这样吧,a=a*(1/i)就可以理解成这样子,第一个是1,第二个就是1*(1/2)结果就是0.5下来呢,就是0.5*(1/3)这个呢就等于是(1/2)*(1/3)也就等于是1/3的阶剩了呀,你说对不,一直循坏到结果,这样理解了吧. 在不理解可以问我,我在线.

这要看你while循环体怎么写的了?
1)
int i=1,n=0;int sum=0;
while(sum<=1){
sum=sum+1/i;
i++;
}
n=i;
上面这种情况无法跳出循环,因为1/i=0(i>1),所以sum=1;循环不会停止;

2)
double i=1,sum=0;int n=0;
while(sum<=1){
sum=sum+1/i;
i++;
}
n=(int)i;
上面这种情况无法跳出循环,因为1/i>0(i>1),所以sum>1;循环停止,n=2;
你可能是除法规则没有理解,除法和数据类型相关的。

a = a*(1.0/i)
a乘上1/N 就是 1/N!

阶乘指从1乘以2乘以3乘以4一直乘到所要求的数。 例如所要求的数是4,则阶乘式是1×2×3×4,得到的积是24,24就是4的阶乘。
参考阶乘概念
http://baike.baidu.com/view/245476.htm#1

把a*(1.0/i)赋值给a

用java编写使用do-while循环语句实现计算1~100之和的程序段
答:用java编写使用do-while循环语句实现计算1~100之和,如下:package com.test;public class TestA {public static void main(String[] args) {//计量int count=0;//总是int sum=0;//do循环不管while循环条件,都会执行一次do{sum+=count;count++;//只要count还满足while,那还会执行一次,直到不满足...

提供使用while 循环的简单 Java 程序,谢谢
答:int i = 0;while(i < 10){ System.out.println(i);i++;} 输出结果为:0,1,2,3,4,5,6,7,8,9

java:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个...
答:import java.util.Scanner;public class test{ public static void main(String[] args) { /**wordCount是存储字母个数,spaceCount是存储空格个数,numberCount是存储数字个数,otherCount存储其它字符个数,temp存放的是字符的ASCII码*/ int wordCount=0,spaceCount=0,numberCount=0,otherCount=0,i=0...

急!!!用Java编写以下程序:
答:System.out.println("The sum is:" + sum);然后将这些语句组合成一个Java应用程序,计算并打印整数从1到10的累加和。要求程序中使用自增语句,用while结构循环执行计算。循环应该在变量x的值为11时终止。public class Du { public static void main(String[] args) { int sum;int x;sum = 0;...

java编写程序实现以下功能
答:import java.io.*;import java.util.*;public class Test { public static void main(String[] args) { String fileName = "a.txt";WriteData(5000, fileName);ReadData(fileName);} //产生num个1~9999之间的随机整数,并将其存入fileName文件 public static void WriteData(int num, String ...

使用JAVA编写一个程序
答:package cn.txet.partice;import java.util.Random;import java.util.Scanner;public class DemoRandom {private static int k, i,n=0;public static void main(String[] args) {// 使用当前时间作为种子数字来创建Random对象Random random = new Random(System.currentTimeMillis());// 创建Scanner...

用java编写程序,使用文件输出流,向文件分别写入如下类型的数据:int、d...
答:import java.io.*;class Test { public static void main(String args[])throws IOException { writeData();} public static void writeData()throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in));DataOutputStream dos=new DataOutputStream(new FileOutput...

编写一个JAVA应用程序,使用for循环计算8+88+888+8888+88888+...的前...
答:public class Test { public static void main(String[] args) { String a="";long b;int sum=0;for(int i=0;i<10;i++){ a+="8";b=Long.parseLong(a);sum+=b;System.out.println("结果为"+sum);} } }

编写一个java应用程序,进行文件读写操作,要求去下: 1.将用户从键盘输入...
答:import java.io.BufferedWriter;import java.io.FileWriter;import java.io.InputStreamReader;public class Key2File { public static void main(String[] args) throws Exception { // 输入流 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));// 输出流 BufferedWriter bw =...

用JAVA编写程序,实现对数组int a[]=new a[5];从键盘随意输入5个值_百 ...
答:public static void main(String[] args) { System.out.println("请输入:");Scanner sc = new Scanner(System.in);int []a = new int[5];int ct =0;while (ct<5) { a[ct++]= sc.nextInt();} Arrays.sort(a);System.out.println("排序后:");for (int i = 0; i < a....

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网