java计算1/1!+1/2!+1/3!+------+1/n!及其扩展

题目描述
首先定义一个父类计算如下表达式:S=1+1/2!+1/3!+……+1/n!
然后,利用继承机制定义一个子类计算如下表达式:
S=x+x/2!+x/3!+……+x/n!
利用继承机制再定义一个子类计算如下表达式:
S=1+1/(2!*x)+1/(3!*x)+……+1/(n!*x)
定义主类,类名mainClass,在类中定义main方法,测试以上几个成员方法
思路

  1. 定义父类是calculate,还有它的两个派生类calculate_mul_x(乘)以及calculate_div_x(除)
  2. 只要计算出1/1!+1/2!+1/3!±-----+1/n!,那么它的两个派生计算结果就很容易得到,乘以x或者除以x就行了
  3. 计算阶乘和,另f [ n ] = 1 / n! ,那么f [ n ] = f [ n - 1 ] / n 所以只要循环 temp*=i;
    sum+=1.0/temp;
    这两个语句就行了,temp初始值为1

代码实例

package demoTest;

/*
@Author:HwSir
@DateTime:2022/8/18 21:12
@Motto:我所生活的,便是我所热爱的!
@Motto:纵使疾风起,人生不言弃!
*/

/*
    首先定义一个父类计算如下表达式:S=1+1/2!+1/3!+…..+1/n!
    然后,利用继承机制定义一个子类计算如下表达式:
    S=x+x/2!+x/3!+…..+x/n!
    利用继承机制再定义一个子类计算如下表达式:
    S=1+1/(2!*x)+1/(3!*x)+…..+1/(n!*x)
    定义主类,类名mainClass,在类中定义main方法,测试以上几个成员方法
*/

class calculate{
    private double sum=0;

    public double getSum(int n){
        int temp=1;
        for(int i=1;i<=n;i++){
            temp*=i;
            sum+=1.0/temp;
        }
        return sum;
    }
}

class calculate_mul_x extends calculate{
    public double getSum(int n,int x){
        return super.getSum(n)*x;
    }
}

class calculate_div_x extends calculate{
    public double getSum(int n,int x){
        return super.getSum(n);
    }
}

public class mainClass {
    public static void main(String[] args) {
    	//测试用例
        calculate c1=new calculate();
        System.out.println(c1.getSum(2));

        calculate_mul_x c2=new calculate_mul_x();
        System.out.println(c2.getSum(10,10));

        calculate_div_x c3=new calculate_div_x();
        System.out.println(c3.getSum(10,10));
    }
}

如有错误,敬请指正

你可能感兴趣的:(java代码训练,java,开发语言)