问题 E: 计算机中的数学
题目描述 description
输入一个正数x和一个正整数n,求下列算式的值。要求顶一个调用2个函数:fact(n)计算n的阶乘;mypow(x,n)计算x的n次幂(即xn),两个函数的返回值类型是double。
x - x2/2! + x3/3! + ... + (-1)n-1xn/n!
×输出保留4位小数。
输入 input
x n
输出 output
数列和
样例输入 sample input
2.0 3
样例输出 sample output
1.3333
package compete;
//计算机中的数学
import java.text.DecimalFormat;
import java.util.Scanner;
public class Calculate {
public static void main(String[] args) {
// TODO Auto-generated method stub
DecimalFormat a=new DecimalFormat("0.0000"); //控制
Scanner scanner=new Scanner(System.in);
double x=scanner.nextDouble();
int n=scanner.nextInt();
double sum=0.0;
for(int i=1;i<=n;i++)
{
sum=sum+(mypow(x,i)*mypow(-1.0,i-1))/fact(i);
}
//System.out.print(fact(3));
//System.out.println(mypow(2,3));
System.out.println(a.format(sum));
}
public static double fact(double n)
{
if(n<0) System.out.println("Data is error");
if(n==0||n==1) return 1;
else {
n=(n*fact(n-1));
return n;
}
}
public static double mypow(double x,double n){
if(n==0) {
return 1;
}
else if(n==1) {
return x;
}
else return mypow(x,n-1)*x;
}
}