Page 1 of 1

Reputation:

# need help with Java factorial

Posted 19 October 2010 - 09:48 AM

Hey guys i was wondering if anyone can help me with this

im new at java but my teacher really has it that we are at this level already, i get the basic knowlege but it would be awesome if anyone would help. So far i got the factorial but i dont know how to implement it into the program.

-------------------------------------------------
One of the more amazing facts from calculus is that the following sum gets closer and closer to the value ex the more terms you add in:
ex = 1 + x + x2/2! + x3/3! + x4/4! + x5/5! + x6/6! + . . . .
Remember that n! means n factorial, n*(n-1)*(n-2)* ... *1. For example, if x is 2 then
e2 = 1 + 2 + 22/2! + 23/3! + 24/4! + 25/5! . . . .
e2 = 1 + 2 + 4/2 + 8/6 + 16/24 + 32/120 + . . . .

e2 = 1 + 2 + 2 + 1.3333 + 0.6666 + 0.2666 + . . . .

e2 ~ 7.266

More exactly, e2 = 7.38907...
Write a program that asks the user to enter x, then calculates ex using a loop to add up successive terms until the current term is less than 1.0E-12. Then write out the value Math.exp(x) to see how your value compares.
To do this program sensibly, the loop will add in a term each iteration.
sum = sum + term;
Look carefully at the first equation for ex. Notice that each term in the series is:
x N/N!
for some N. This is the same as:
x(N-1)/(N-1)! * x/N
This is the previous term times x/N. So each iteration of the loop merely has to multiply the previous term by x/N and add it to the accumulating sum.
Don't let the math scare you away! This is actually a fairly easy program, and is typical of a type of calculation that computers are often used for.
Enter x:
2
n:1 term: 2.0 sum: 3.0
n:2 term: 2.0 sum: 5.0
n:3 term: 1.3333333333333333 sum: 6.333333333333333
n:4 term: 0.6666666666666666 sum: 7.0
n:5 term: 0.26666666666666666 sum: 7.266666666666667
n:6 term: 0.08888888888888889 sum: 7.355555555555555
n:7 term: 0.025396825396825397 sum: 7.3809523809523805
n:8 term: 0.006349206349206349 sum: 7.387301587301587
n:9 term: 0.0014109347442680777 sum: 7.3887125220458545
n:10 term: 2.8218694885361555E-4 sum: 7.388994708994708
n:11 term: 5.130671797338464E-5 sum: 7.389046015712681
n:12 term: 8.551119662230774E-6 sum: 7.3890545668323435
n:13 term: 1.3155568711124268E-6 sum: 7.389055882389215
n:14 term: 1.8793669587320383E-7 sum: 7.3890560703259105
n:15 term: 2.5058226116427178E-8 sum: 7.389056095384136
n:16 term: 3.1322782645533972E-9 sum: 7.389056098516415
n:17 term: 3.6850332524157613E-10 sum: 7.389056098884918
n:18 term: 4.094481391573068E-11 sum: 7.389056098925863
n:19 term: 4.309980412182177E-12 sum: 7.3890560989301735
n:20 term: 4.309980412182177E-13 sum: 7.389056098930604

my e^x: 7.389056098930604
real e^x: 7.38905609893065

----------------------------------------------------------------------------

Is This A Good Question/Topic? 0

## Replies To: need help with Java factorial

### #2 n8wxs

• --... ...-- -.. . -. ---.. .-- -..- ...

Reputation: 972
• Posts: 3,878
• Joined: 07-January 08

## Re: need help with Java factorial

Posted 19 October 2010 - 10:29 AM

We will not give you code. Post your attempt(s) at solving you problem. We will help you debug it and suggest improvements.

Use the code tags:

Reputation:

## Re: need help with Java factorial

Posted 19 October 2010 - 10:57 AM

n8wxs, on 19 October 2010 - 09:29 AM, said:

We will not give you code. Post your attempt(s) at solving you problem. We will help you debug it and suggest improvements.

Use the code tags:

Thanks for a reply, and i dint want the code just a mental breakdown of what i need to add =]

so far i have

```import java.util.Scanner;
class ConrolledLoop{
public static void main(String[]    args){
Scanner scan = new Scanner(System.in);

double inData;

System.out.println("Enter n!: ");

inData = scan.nextDouble();

double N = inData; //User input
double factorial= 1;

System.out.println(+N+"! is " +factorial);
for (double i= 1; i<=N; i++){
factorial=factorial*i;
}
System.out.println(factorial);

}
}

```

That is what i have so far, but that is just to firgure out the factorial. I need a way so that When the user inputs X it would power X to itself and factor X! so it would look like this e^x = 1 + x + x^2/2!
then after the first x^2/2! it adds one to the power and one to the factorial and now it would look like
e^x = 1 + x + x^2/2!+x^3/3!.. i hope that helps im sorry if im being a such pain, im kinda new to this.

Reputation:

## Re: need help with Java factorial

Posted 19 October 2010 - 11:29 AM

Ghosted, on 19 October 2010 - 09:57 AM, said:

n8wxs, on 19 October 2010 - 09:29 AM, said:

We will not give you code. Post your attempt(s) at solving you problem. We will help you debug it and suggest improvements.

Use the code tags:

Thanks for a reply, and i dint want the code just a mental breakdown of what i need to add =]

so far i have

```import java.util.Scanner;
class ConrolledLoop{
public static void main(String[]    args){
Scanner scan = new Scanner(System.in);

double inData;

System.out.println("Enter n!: ");

inData = scan.nextDouble();

double N = inData; //User input
double factorial= 1;

System.out.println(+N+"! is " +factorial);
for (double i= 1; i<=N; i++){
factorial=factorial*i;
}
System.out.println(factorial);

}
}

```

That is what i have so far, but that is just to firgure out the factorial. I need a way so that When the user inputs X it would power X to itself and factor X! so it would look like this e^x = 1 + x + x^2/2!
then after the first x^2/2! it adds one to the power and one to the factorial and now it would look like
e^x = 1 + x + x^2/2!+x^3/3!.. i hope that helps im sorry if im being a such pain, im kinda new to this.

This is my new code it give me 3 when i put 2 in
```import java.util.Scanner;
class ConrolledLoop{
public static void main(String[]    args){
Scanner scan = new Scanner(System.in);

double inData;

System.out.println("Enter the term");

inData = scan.nextDouble();

double F = inData;
double P = inData;
double N = inData;
double factorial= 1;
double e = 0;

for (double i= 1; i<=P; i++){

}

for (double i= 1; i<=F; i++){
factorial=factorial*i;
}

e= Math.pow((N), P)/F;

double n = e+1;

System.out.println(n);

}
}

```

now i just gotta make it loop so that it give me 5 then 6.333333333333333 etc. any help