Java程序因子

时间:2013-07-26 03:57:23

标签: java

以下是书中的内容:

“值e^x可以用以下总和近似:

  

1 + X + X ^ 2/2!+的x ^3分之3!+ ... +的x ^ N / N!

编写一个以值x作为输入的程序,并输出n的总和作为值1到10,50和100中的每一个。您的程序应该重复计算x的新值,直到用户说她或他是通过。表达式n!被称为n的阶乘,定义为

  

N! = 1 * 2 * 3 * ... * n

使用double类型的变量来存储阶乘(或安排计算以避免直接计算阶乘);否则,您可能会产生整数溢出,即大于Java的整数允许。“

我没有任何编码问题(至少还没有),我的问题是我不知道它要求我做什么。我得到了阶乘部分(ex. 3i = 1*2*3),但我不确定它还在询问什么。我让用户输入“x”的值,但“n”来自哪里?

“值e^x可以用以下总和近似:

  

1 + X + X ^ 2/2!+的x ^3分之3!+ ... +的x ^ N / N!

“我不知道这是在说什么或要求什么。

我把这个for循环放在1-10,50,100部分,我不知道这是否有意义而不理解其余部分,但这里是:

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: ");
    }
}

我在大约两年内没有参加代数,所以有些东西让我失望了。请尽可能帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

它说e^x可以通过泰勒级数近似:Sum(i:0:n)(x i / 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;
} 

在您的情况下,您只需向ex_taylor_series提供不同的n,10,50和100值。