这道题怎么做解释一下,第5题,最好用java解,还有说下什么是步长 20
展开全部
package know;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class T12 {
public static void main(String[] args) {
System.out.println(cal("9"));
}
public static BigDecimal cal(String xstr) {
BigDecimal x = new BigDecimal(xstr);
BigDecimal result = BigDecimal.ONE;
int end = calend(x);
System.out.println(end);
for (int i = 1; i <= end; i++) {
result = result.add(x.pow(i).divide(calmot(i), 5,
RoundingMode.HALF_UP));
}
return result;
}
/**
* 计算n的最大值 计算到小数点后5位
*
* @return
*/
public static int calend(BigDecimal x) {
int m = 1;
while (x.pow(m).divide(calmot(m), 6, RoundingMode.HALF_UP)
.compareTo(new BigDecimal("0.00001")) >= 0) {
m++;
}
return m;
}
/**
* 计算分母 m!
*
* @return
*/
public static BigDecimal calmot(int m) {
BigDecimal mot = new BigDecimal(m);
for (int i = m - 1; i > 0; i--) {
mot = mot.multiply(new BigDecimal(i));
}
return mot;
}
}
x的n次方/n!,肯定是n越大值越小的,题目要求精度计算到小数点后五位,那么当x的n次方/n!的值小于0.00001时,后面的值没必要计算了,根据这个就能得出n的最大值,其他的逻辑就很好实现了
0.2-1.0步长0.2,意思就是x取值0.2,0.4,0.6,0.8,1.0
更多追问追答
追问
那个大哥,麻烦可以解释一下题目是什么意思吗
追答
就是实现这个公式的逻辑啊,x是输入参数,e的x次方是返回值,不确定的只有n,但是根据题目,可以确定x取某值时n的最大值
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询