www.mh456.com防采集。
呵呵,你知道阶乘的,他其实就是2113这样的,比如1/24就可以5261写成4102(1/2)*(1/12)这样吧,a=a*(1/i)就可以理解成这样子,第一个是1,第二个就是1*(1/2)结果就1653是0.5下来呢,就是0.5*(1/3)这个呢就等于是(1/2)*(1/3)也就等于是1/3的阶剩了呀,你说对不,一直循坏到结果,这样理解了吧. 在不理解可以问我,我在线.
先写个求阶乘的方法: public static int jieCheng(int n) { int result = 1; for (int i = 1; i
package practice;
public class Main{ public static void main(String[] args) { int sum = 0; int i=1; while(i
/*
用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
使用while循环 计算21131+1/2!+1/3!+...+1/20!
完整代码如下: /** * 算出1/2+2/3+3/5+4/8..到第50 * @author Administrator * */public class MathExam {public static void main(String[] args) {int I = 1;double A = 1;double B = 2;double sum = 0;while (I
a用于存储前n个阶乘分之一
呵呵,你知道阶乘的,他其实就是这样的,比如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的阶剩了呀,你说对不,一直循坏到
sum 用于累5261加和
*/
public class WhileDemo {
public static void main(String[] args) {
/*i=i+1的简4102写形式是i+=1;但是二者有本质的区别:
如果1653 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){
/*
用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
for(int i=1;i<=c;i++){
sum*=i;
}*/
if(sum<=1)return 1;
return sum*jieCheng(sum-1);
}
} 本回答被网友采纳
这要看你while循环体怎么写2113的了?1)int i=1,n=0;int sum=0;while(5261sum<=1){sum=sum+1/i;i++;}n=i;上面这种情况4102无法跳出循环,因为1/i=0(i>1),所以1653sum=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! 阶乘指2113从1乘以52612乘以3乘以4一直乘到所要求的4102数。 例如所要求的数是16534,则阶乘式是1×2×3×4,得到的积是24,24就是4的阶乘。 参考阶乘概念http://baike.baidu.com/view/245476.htm#1
1/1! + 1/2! + 1/3! + ... 1/i! + ... + 1/n!那么i就是那个数,a的值在a = a * (1.0 / i); 之前是i!,之后是(i+1)!
内容来自www.mh456.com请勿采集。