使用while循環 計算1+1/2!+1/3!+...+1/20!


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);
}
}



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com