给定一个整数x时写一个函数;返回e,具有以下近似值

时间:2014-11-27 08:45:30

标签: java

![在此输入图片说明] [1]问题:

  

写一个名为'exp'的函数,当给定一个整数x时;回报   具有以下近似值。在此功能中,您应使用前两个函数来计算阶乘和功率。

这是我的代码;

import java.util.Scanner;
public class ass7_q3 {
    public static int power(int x, int y)
    {
        int result = 1;
        for(int i = 1; i <= y; i++)
        {
            result = result * x;
        }
        return result;
    }
    public static int factorial(int n)
    {
        int fact = 1; 
        for(int i = 1; i<= n; i++)
        fact = fact * i;
        return fact;
    }
    public static int exp( int x)
    {
        int result;
        result = (power(x,x) / factorial(x) );
        return result;
    }

    public static void main(String[] args) {
        Scanner read = new Scanner(System.in);
        int sum = 0;
        int x;
        x = read.nextInt();
        for(int i=0; i<=10; i++)
        {
            sum = sum + exp(x);
        }
        System.out.println(sum);
    }

}

但是,当我运行此代码时,它总是给我错误的答案。

我该怎么办?

3 个答案:

答案 0 :(得分:1)

你应该从使用双打而不是整数开始。您不能期望仅使用整数计算来逼近实数。

例如,power(x,x) / factorial(x)将始终返回一个整数,因为两个方法都返回int

答案 1 :(得分:0)

5/2将返回2.您需要将其转换为双倍((double)5)/ 2将返回2.5

答案 2 :(得分:0)

    You should think about range of integer ( in java 2,147,483,647)

   if your input is grater than 12, integer can not handle. 
   Factorial method will return wrong value. because 

    factorial(12)=479,001,600 but
    factorial(13)=6,227,020,800