jia2770909743 发表于 2021-6-29 14:26:43

求e近似值问题

/*求e值
计算多项式1/0!+1/!+1/2!+1/3!....前n项和显示。其中,!表示阶乘计算,0!等于1。
Input
若干个整数,以0结束。
Output
输出N行,每行显示一个小数,保留小数点后两位。这个小数对应多项式的前n项和。
Sample Input
10 1 2 3 0
Sample Output
2.72
1.00
2.00
2.50*/

连帅帅 发表于 2021-6-29 16:10:59

这是java版本的:{:10_312:}
package com.lian.Test;

import java.text.DecimalFormat;
import java.util.Scanner;

/**
* @author :LSS
* @description: 已知表达式,输入对应的数字,计算对应数字前n项的和,输入0程序结束
* @date :2021/6/29 15:16
*/
public class Test2 {

    //保留两位的数据模板
    private static DecimalFormat df = new DecimalFormat("######0.00");

    /**
   * 计算阶乘
   * @param n
   * @return
   */
    public static long getFactorial(int n){
      long result = 1;
      if (n == 0 || n == 1)
            return result;
      for (int i = 2; i <= n; i++) {
            result *= i;
      }
      return result;
    }

    /**
   * 计算1/0!+1/1!+...+1/n!的值
   * @param n
   * @return
   */
    public static double getNumber(int n){
      double result = 0;
      for (int i = 0; i < n; i++) {
            result += (1.0 / getFactorial(i));
      }
      return result;
    }

    public static void main(String[] args) {
      Scanner scanner = new Scanner(System.in);
      int [] ints = new int;
      int flag = 0;
      while (true){
            int i = scanner.nextInt();
            if (i == 0)
                break;
            ints = i;
            flag++;
      }
      for (int i = 0; i < flag; i++) {
            System.out.println(df.format(getNumber(ints)));
      }
    }
}
页: [1]
查看完整版本: 求e近似值问题