Напишите функцию, когда дано одно целое число x; возвращает e в следующем приближении

1

! [введите описание изображения здесь] [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 ответа

1

Вы должны начать с работы с двойниками вместо целых чисел. Вы не можете ожидать аппроксимации реального числа, используя только целые вычисления.

Например, power(x,x)/factorial(x) всегда будет возвращать целое число, так как оба метода возвращают int.

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
0

5/2 вернется 2. Вам нужно бросить его, чтобы удвоить ((двойной) 5)/2 вернет 2.5

Ещё вопросы

Сообщество Overcoder
Наверх
Меню