![在此输入图片说明] [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);
}
}
但是,当我运行此代码时,它总是给我错误的答案。
我该怎么办?
答案 0 :(得分:1)
你应该从使用双打而不是整数开始。您不能期望仅使用整数计算来逼近实数。
例如,power(x,x) / factorial(x)
将始终返回一个整数,因为两个方法都返回int
。
答案 1 :(得分:0)
答案 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