! [введите описание изображения здесь] [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);
}
}
Однако, когда я запускаю этот код, он всегда дает мне неправильный ответ.
Что я могу сделать?
Вы должны начать с работы с двойниками вместо целых чисел. Вы не можете ожидать аппроксимации реального числа, используя только целые вычисления.
Например, power(x,x)/factorial(x)
всегда будет возвращать целое число, так как оба метода возвращают int
.
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
5/2 вернется 2. Вам нужно бросить его, чтобы удвоить ((двойной) 5)/2 вернет 2.5