aspose file tools*
The moose likes Beginning Java and the fly likes Nested Loops Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Nested Loops" Watch "Nested Loops" New topic
Author

Nested Loops

Stephanie Drafts
Greenhorn

Joined: Sep 26, 2001
Posts: 1
I got this code from Beginning Java 2 JDK 1.2.
public class Factorial {
public static void main(String[] args){
long limit = 20;
long factorial = 1;
for(int i=1; i <= limit; i++){
factorial = 1;
for(int factor = 2; factor <= i; factor++){
factorial *= factor++;
System.out.println(i + " ! " + " is " + factorial );
}
}
}
I get the first part of the "For" loop but when it hits the second "For" loop. I see the loop_condition "factor <= i" never being true. Is the first time through the loop factor = 2 and i = 1. If so, isn't it false. I have changed the relational operation, <=, to different ones to see what would happen. Turns out, only <= works. Help!

------------------
Tom Ben
Ranch Hand

Joined: Aug 17, 2001
Posts: 109
Originally posted by Stephanie Drafts:
I got this code from Beginning Java 2 JDK 1.2.
public class Factorial {
public static void main(String[] args){
long limit = 20;
long factorial = 1;
for(int i=1; i <= limit; i++){
factorial = 1;
for(int factor = 2; factor <= i; factor++){
factorial *= factor++;
System.out.println(i + " ! " + " is " + factorial );
}
}
}
I get the first part of the "For" loop but when it hits the second "For" loop. I see the loop_condition "factor <= i" never being true. Is the first time through the loop factor = 2 and i = 1. If so, isn't it false. I have changed the relational operation, <=, to different ones to see what would happen. Turns out, only <= works. Help!

This is because the first time thru factor is neither greater than i or less to it so it is false and falls out.You can say something like >= so that factor will always be greater than i.
------------------
Sun Certified Programmer on the Java 2 Platform


Sun Certified Programmer on the Java 2 Platform
greg philpott
Ranch Hand

Joined: Nov 10, 2000
Posts: 73
To best solve your problem, it should be completely understood first.
The mathematical way of finding the factorial is:
N ! = Summ (K = 0 to N) of : (N K) * ((-1) ^ K) * (( N - K) ^ N) where (N K) is the binomial coefficient;
Example: 4! = 4*3*2*1 and 5! = 5*4*3*2*1
Now that is known your program can be altered to work out the factorial correctly, like this:

 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Nested Loops