Java程序阶乘
书中是这样写的: “值Java程序阶乘,java,Java,书中是这样写的: “值e^x可近似为以下总和: 1+x+x^2/2!+x^3/3!+…+x^n/n 编写一个程序,将一个值x作为输入,并输出n的和,n取为值1到10、50和100中的每一个。您的程序应重复计算x的新值,直到用户说她或他已完成。表达式n!称为n的阶乘,定义为 n!=1*2*3*…*n 使用double类型的变量存储阶乘(或安排计算以避免任何直接的阶乘计算);否则,可能会产生整数溢出,即大于Java允许的整数。” 我没有任何编码问题(至少还没有),我的问题是我不知道它要我做什么。我得
e^x
可近似为以下总和:
1+x+x^2/2!+x^3/3!+…+x^n/n
编写一个程序,将一个值x作为输入,并输出n的和,n取为值1到10、50和100中的每一个。您的程序应重复计算x的新值,直到用户说她或他已完成。表达式n!称为n的阶乘,定义为
n!=1*2*3*…*n
使用double类型的变量存储阶乘(或安排计算以避免任何直接的阶乘计算);否则,可能会产生整数溢出,即大于Java允许的整数。”
我没有任何编码问题(至少还没有),我的问题是我不知道它要我做什么。我得到了阶乘部分(例如3i=1*2*3)
,但我不确定它还要求什么。我让用户为“x”输入一个值,但“n”从何而来
“值e^x
可近似为以下总和:
1+x+x^2/2!+x^3/3!+…+x^n/n
“我不知道这是在说什么或要求什么
我把1-10,50,100部分的这个for循环放在一起,我不知道在不理解其余部分的情况下这是否有意义,但这里是:
for (counter = 1 ; counter <= 100 ;counter++)
{
//System.out.print("Enter value for x: ");
//x = keyIn.nextDouble();
if (counter >= 1 && counter <= 10)
{
if (counter == 1)
System.out.println("Iterations 1-10: ");
System.out.println("test to see if 10 show up");
}
else if (counter == 50)
{
System.out.println("Iteration 50: ");
}
else if (counter == 100)
{
System.out.println("Iteration 100: ");
}
}
for(counter=1;counter=1&&counter这是说e^x
可以通过泰勒级数来近似:Sum(i:0:n)
(xi/fact(i))
因此,我们有:
double ex_taylor_series(double x, int n)
{
double value;
for(int i = 0; i < n; i++)
{
value += Math.pow(x, i)/(factorial(i));
}
return value;
}
private int factorial (int num)
{
int value = 1;
for(int i = num; i > 1; i--)
{
value *= i;
}
return value;
}
double-ex\u-taylor\u级数(double-x,int-n)
{
双重价值;
对于(int i=0;i1;i--)
{
值*=i;
}
返回值;
}
在您的例子中,您只需将n、10、50和100的不同值输入到ex\u taylor_级数它要求您使用指数函数的泰勒级数计算e^x
的某个值。e^x
对于一些大的函数大约等于1+x+x^2/2!+x^3/3!+…+x^n/n!
n的值
。是的@Blender是正确的。n表示一些大的数字。它可以是用户输入的,也可以是任何固定的数字。好的,谢谢。我只需要再澄清一点,为什么它有一个“e”和一个“n”变量。这是让我感到困惑的部分,我有用户输入“x”,但还有“n”和“e”在公式中浮动,我不确定这些值的代码是什么。而且,我的书从来没有读过“pow()方法。请继续阅读。基本上,你可以通过求和来近似函数。在你的例子中,我们近似于e^x
,但近似程度不同:10、50和100次迭代。增加迭代次数可以提高近似精度……既然你是新手,你应该接受。祝你好运。我们lp,我完成了它,它按它应该的方式运行。我弄明白了公式的意思,然后用了两行代码,一段用于功率提升和阶乘部分,这就成功了!谢谢你,史蒂夫和其他人。