gpt4 book ai didi

java - e^x = 1 + x + x2/2! + x3/3! + x4/4! << 使用java方法对e求x次方

转载 作者:行者123 更新时间:2023-12-01 22:03:09 25 4
gpt4 key购买 nike

所以。聪明人你好。我在这里做错了什么?我只是不明白这段代码有什么问题。谁帮助我就加10分。我正在尝试使用递归来为 e^x 创建一个方法。使用e^x = 1 + x + x2/2! + x3/3! + x4/4! + ... 方程

public class tester {
public static double power(double x, int n) {
if (n == 0) {
return 1;
} else {
return x * power(x, n - 1);
}

}

public static int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}

public static double myexp(double x, int n) {
if (n == 0) {
return 1;
} else {
return (power(x, n) / factorial(n)) + myexp(x, n - 1);
}
}

public static void main(String[] args) {
System.out.println(myexp(x, n)); // unfortunately, increasing n value
// makes it go infinite.
}

}

所以 x 是 e^x 中的 x,n 是添加到第 n 项时的总值。所以例如,myexp(3,5) 将是 e^3 加到第 5 项。因此,n 越高,e^3 就越准确。

最佳答案

您的问题是在 factorial 方法中使用“int”数据类型。更具体地说,阶乘数字很快就会变得很大,而 int 数据类型却太小。例如,如果您编写代码:

public static void main(String[] args) {
System.out.println(factorial(50));
}

输出是 0,这显然是错误的,因此你的结果是Infinity。只需将阶乘的返回类型从 int 更改为 double,如下所示:

public static double factorial(int n)

然后如果你尝试:

public static void main(String[] args) {
System.out.println(myexp(1., 100));
}

您得到2.7182818284590455

关于java - e^x = 1 + x + x2/2! + x3/3! + x4/4! << 使用java方法对e求x次方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33341217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com