/* *一楼是用递归实现的 这里不用递归 *计算的值为300我们只需要在命令提示符空窗口中输入 *java Ma 300 * */ public class Ma{ public static void main(String[] args){ //这里最好加入判断args[0]是不是数字组合 int b=Integer.parseInt(args[0]); Ma a=new Ma();System.out.println(a.dol(b)); }private int doInt(int i){//计算阶乘 int doint=1; for(int j=0;j<i;++j){ doint *=j; } return doint; } public int dol(int i){ int dol=0; for(int j=0;j<i;++j){ dol += j/doInt(j); } return dol;}}
import java.util.Scanner; import java.math.*; public class Sum { public static void main(String args[]) { Scanner sc = new Scanner(System.in); BigDecimal n = sc.nextBigDecimal(); System.out.println(sum(n)); } /** * 计算1/n! * @param n * @return */ public static BigDecimal oneDivN(BigDecimal n) { BigDecimal bd = new BigDecimal(1); BigDecimal i = new BigDecimal(1); //db.add(...)以后,db的值不会改变,所以要重新new一个对象 for(;i.compareTo(n)!=1;i=new BigDecimal(i.add(new BigDecimal(1)).toString())) { bd = new BigDecimal(bd.multiply(i).toString()); } return new BigDecimal(1).divide(bd,100,BigDecimal.ROUND_HALF_UP); } /** * 从头加到尾 * @param n * @return */ public static BigDecimal sum(BigDecimal n) { BigDecimal sum = new BigDecimal(0); BigDecimal i = new BigDecimal(1); for(;i.compareTo(n)!=1;i=new BigDecimal(i.add(new BigDecimal(1)).toString())) { sum = new BigDecimal(sum.add(oneDivN(i)).toString()); } return sum; } }
public class Factorial { public static void main(String[] args) {
{
int n=300;
System.out.println(do1(n));
} public static double do1(int n)//计算1/n!+....
{
if(n<=1)
return 1;
else
{
return 1/(doInt(n))+do1(n-1);
}
} public static double doInt(int n)//计算n!
{
if(n<=1)
return 1;
else if(n==2)
return 2;
else
{
return n*doInt(n-1);
}
}
*一楼是用递归实现的 这里不用递归
*计算的值为300我们只需要在命令提示符空窗口中输入
*java Ma 300
*
*/
public class Ma{
public static void main(String[] args){
//这里最好加入判断args[0]是不是数字组合
int b=Integer.parseInt(args[0]);
Ma a=new Ma();System.out.println(a.dol(b));
}private int doInt(int i){//计算阶乘
int doint=1;
for(int j=0;j<i;++j){
doint *=j;
}
return doint;
}
public int dol(int i){
int dol=0;
for(int j=0;j<i;++j){
dol += j/doInt(j);
}
return dol;}}
如正如下
public double dol(int i){
double dol=0;
for(int j=0;j<i;++j){
dol += 1/doInt(j);
}
return dol;}
import java.math.*;
public class Sum
{
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
BigDecimal n = sc.nextBigDecimal();
System.out.println(sum(n));
}
/**
* 计算1/n!
* @param n
* @return
*/
public static BigDecimal oneDivN(BigDecimal n)
{
BigDecimal bd = new BigDecimal(1);
BigDecimal i = new BigDecimal(1);
//db.add(...)以后,db的值不会改变,所以要重新new一个对象
for(;i.compareTo(n)!=1;i=new BigDecimal(i.add(new BigDecimal(1)).toString()))
{
bd = new BigDecimal(bd.multiply(i).toString());
}
return new BigDecimal(1).divide(bd,100,BigDecimal.ROUND_HALF_UP);
}
/**
* 从头加到尾
* @param n
* @return
*/
public static BigDecimal sum(BigDecimal n)
{
BigDecimal sum = new BigDecimal(0);
BigDecimal i = new BigDecimal(1);
for(;i.compareTo(n)!=1;i=new BigDecimal(i.add(new BigDecimal(1)).toString()))
{
sum = new BigDecimal(sum.add(oneDivN(i)).toString());
}
return sum;
}
}
public static void main(String[] args) {
//sum=1/1!+1/2!+1/3!+...+1/n!
System.out.println(caculate(5));
}
private static double caculate(int n) {
double sum = 0.0;
for(int i = 1; i<=n; i++) {
double temp = 1.0;
for(int j = 1; j<=i; j++) {
temp = temp*1/j;
}
sum += temp;
}
return sum;
}
}
System.out.println(factorialReciprocalSum(10));
} private static double factorialReciprocalSum(int n) {
double sum = 0;
double factorial = 1;
for(int i = 1; i <= n; i++) {
factorial *= i;
sum += 1 / factorial;
}
return sum;
}
}
double sum = 0;
double factorial = 1;
for(int i = 1; i <= n; i++) {
factorial /= i;
sum += factorial;
}
return sum;
}
import java.util.Scanner;
class Test
{
public static void main(String[] args)
{
double sum=0;
double p=1;
double num=0;
Scanner scanner=new Scanner(System.in);
System.out.println("请输入您要计算的数字:");
int n=scanner.nextInt();
for (double i=1;i<=n ;i++ )
{
p*=i;
//计算阶乘;
sum+=p;
//计算阶乘的和
num+=1/p;
//计算1/1!+......+1/n!
System.out.println("1到n的阶乘分别为:"+p);
}
System.out.println("1到n的阶乘的和为:"+sum);
System.out.println("1/1!+1/2!+......+1/n!="+num);
}
}
public class EE { public static void main(String[] args)
{
float sum, i, j, t, n;
n = 10; //
for(sum = 0, i = 1; i <= n; ++i)
{
for(j = 1, t = 1; j <= i; ++j)
{
t *=j;
}
sum += 1/t;
}
System.out.println("sum = " + sum);
}
}