1. Member
Join Date
Sep 2009
Posts
31
Rep Power
0

## Help please, stuck on for statement problem.

Hey everyone. i have been trying to figure this out for quite some time now and i am just stuck on using the for loop. i need to write an application that determines the value for mathematical constant e by using the following formula . allow the user to enter the number of terms to calculate..

e=1+1/1!+1/2!+1/3!...

i am just stuck on this, i know i need to first make a method that calculates n! which i am able to do, this code works..

Java Code:
```import java.util.Scanner;
public class Factorials {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

int num;
int nFact;

num=input.nextInt();

nFact = fact(num);

System.out.println(num + "! = " + nFact + ".");
}
static int fact(int num){
if(num<=1)
return 1;

else{
return num*fact(num-1);
}

}
}```
i dont know how or where to put the for loop. anybody who cares to clear this up for me is appreciated. thanks!

2. This sample now asks you for the value of n of which to iterate up to. The compute e function does the for loop of invoking 1/n! and summing it with the previous terms.

Likely didn't need to make the factorial function into a loop to be non-recursive as well, but this way should use less heapspace for larger N.

Java Code:
```import java.util.Scanner;

public class Factorial {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

// that original just compute n!
//    System.out.println("Please enter a number: ");
//    in num = input.nextInt();
//    int nFact = fact(num);
//    System.out.println(num + "! = " + nFact + ".");

// now compute e= 1/1! + 1/2! + ...

System.out.prints("Enter n for e=1/1! + ... + 1/n! :");
int n = input.nextInt();

double e = computeE(n);

System.out.println("e=" + e);
}

/**
* computes e = 1/1! + ... + 1/n!
*/
public static double computeE(int n) {
double result = 0;
for (int i = 1; i <=n; i++) {
double term = (double)1 / fact(i);
result += term;
}
return result;
}

/**
* computes n factorial using a for loop (not recursive method call)
* @param num
* @return
*/
static int fact(int num) {
int result = num;
for (int i = num-1; i > 0; i --) {
int newResult = result * i;
// could do result *= i, but do this additional variable for debug output clarity.
//System.out.println("doing " + result + " * " + i + " = " + newResult);
result = newResult;
}
return result;
}

}```

3. There is no need to compute those factorials over and over again. Suppose you have the value for the n-th term == 1/n!. If you want to know the n+1st term (which is 1/(n+1)!) simply do this: (value of n-th term)/(n+1) == 1/(n!*(n+1)) == 1/(n+1)!. In code:

Java Code:
```double e= 1;
double term= 1;
for (int n= 1; n <= N; n++) {
term/= n;
e+= term;
}
System.out.println("e: "+e);```
kind regards,

Jos

4. Member
Join Date
Sep 2009
Posts
31
Rep Power
0
thanks so much for the help!

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•