e^x=1+;x+;x2/2+;x3/3+;x4/4<&书信电报;使用java方法将e转换为x电源
所以。你好,聪明人。我做错了什么?我就是想不出这个代码有什么问题。任何帮助我的人都得10分。 我正在尝试使用递归为e^x创建一个方法。使用e^x=1+;x+;x2/2+;x3/3+;x4/4<&书信电报;使用java方法将e转换为x电源,java,Java,所以。你好,聪明人。我做错了什么?我就是想不出这个代码有什么问题。任何帮助我的人都得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
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加起来。因此,n越高,e^3就越精确。您的问题是在阶乘方法中使用“int”数据类型。更具体地说,阶乘数很快变得巨大,而int数据类型太小。例如,如果您编写了以下代码:
public static void main(String[] args) {
System.out.println(factorial(50));
}
输出为0,这显然是错误的,因此您的结果为无穷大。只需将阶乘的返回类型从int
更改为double
,如下所示:
public static double factorial(int n)
然后,如果您尝试:
public static void main(String[] args) {
System.out.println(myexp(1., 100));
}
您得到了2.7182818284590455
您的问题是在阶乘方法中使用了“int”数据类型。更具体地说,阶乘数很快变得巨大,而int数据类型太小。例如,如果您编写了以下代码:
public static void main(String[] args) {
System.out.println(factorial(50));
}
输出为0,这显然是错误的,因此您的结果为无穷大。只需将阶乘的返回类型从int
更改为double
,如下所示:
public static double factorial(int n)
然后,如果您尝试:
public static void main(String[] args) {
System.out.println(myexp(1., 100));
}
您得到了2.7182818284590455
您的问题是在阶乘方法中使用了“int”数据类型。更具体地说,阶乘数很快变得巨大,而int数据类型太小。例如,如果您编写了以下代码:
public static void main(String[] args) {
System.out.println(factorial(50));
}
输出为0,这显然是错误的,因此您的结果为无穷大。只需将阶乘的返回类型从int
更改为double
,如下所示:
public static double factorial(int n)
然后,如果您尝试:
public static void main(String[] args) {
System.out.println(myexp(1., 100));
}
您得到了2.7182818284590455
您的问题是在阶乘方法中使用了“int”数据类型。更具体地说,阶乘数很快变得巨大,而int数据类型太小。例如,如果您编写了以下代码:
public static void main(String[] args) {
System.out.println(factorial(50));
}
输出为0,这显然是错误的,因此您的结果为无穷大。只需将阶乘的返回类型从int
更改为double
,如下所示:
public static double factorial(int n)
然后,如果您尝试:
public static void main(String[] args) {
System.out.println(myexp(1., 100));
}
你得到了2.7182818284590455
“帮助我的人得10分”什么,你不打算接受答案?那我就帮不了你了。每一分多少美元?;)“寻求调试帮助的问题(“此代码为什么不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。”问题中的代码不编译,所以不能用来重现所描述的问题。x
和n
来自哪里?当你上Java数学课的时候,为什么要做这么多呢。这就像数学一样简单。exp(n)“帮助我的人得10分”什么,你不打算接受答案吗?那我就帮不了你了。每一分多少美元?;)“寻求调试帮助的问题(“此代码为什么不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。”问题中的代码不编译,所以不能用来重现所描述的问题。x
和n
来自哪里?当你上Java数学课的时候,为什么要做这么多呢。这就像数学一样简单。exp(n)“帮助我的人得10分”什么,你不打算接受答案吗?那我就帮不了你了。每一分多少美元?;)“寻求调试帮助的问题(“此代码为什么不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。”问题中的代码不编译,所以不能用来重现所描述的问题。x
和n
来自哪里?当你上Java数学课的时候,为什么要做这么多呢。这就像数学一样简单。exp(n)“帮助我的人得10分”什么,你不打算接受答案吗?那我就帮不了你了。每一分多少美元?;)“寻求调试帮助的问题(“此代码为什么不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。”问题中的代码不编译,所以不能用来重现所描述的问题。x
和n
来自哪里?当你上Java数学课的时候,为什么要做这么多呢。这就像数学一样简单。exp(n)double
而不是long
?double比long有更多的净空,因为double可以存储更大的值,虽然在某些情况下,你也不会非常精确。有什么理由在像long
这样的东西上使用double
吗?double比long有更多的净空,因为double可以存储更大的值,虽然在某些情况下,你也不会非常精确。有什么理由在像long
这样的东西上使用double
吗?double比long有更多的净空,因为double可以存储更大的值,虽然在某些情况下,你无论如何都不会非常精确。有什么理由在像long
这样的东西上使用double
吗?double比long有更多的净空,因为double可以存储更大的值,尽管在某些情况下你无论如何都不会非常精确。