Folks, the listing below is a small program that calculates the factorial for a given range of numbers. public class TestFactorial { public static void main (String[] args) { for (int i = 0; i < 9; i++) System.out.println(" f(" + i + ") = " + f(i)); } static long f (int n) { long f = 1; while (n > 1) f *= n--; return f; } }
Now, the thing is, I'm having a little problem getting my head around the line <B> f *= n--; </B> This is an example of a postfix operation, right? So, f is multiplied by the value of n BEFORE its value is decreased by 1. Going by this, and using the value of n= 3 - how does it work?
Originally posted by Barry Gaunt: Here's another way using a for loop
OK, looking at this code..... Taking the number 3 as an example What happens?? OK... The integer 3 enters the method as m. And then within the for loop below for ( int n = m ; n > 1 ; n-- ) We FIRSTLY decrease the value of 3 by 1, i.e., so we get 2. And then we multily this by f, i.e., the value 1. - 1 X 2 = 2 Then do the same thing again with the previously decremented value of 2, using the for loop, so we get 1. And then we multiply this by f, i.e., the value 1. - 1 X 1 = 1 But, 2 x 1 = 2 How do we get 6???
Originally posted by Steve Jensen: Cheers! Got it now! Forgot to see that the postfix expression was relevant to the for loop. Cheers folks!
In fact, the postfix operator has NOTHING to do with it. This is all about how a for loop works. When the loop starts, the first part is executed only (commonly int i = 0 . The last section (commonly i++) isn't executed until the end if the loop. And finally the comparison, or middle part, (commonly i < SOME_FINAL_VALUE), is executed after the increment. HTH Layne
Post by:autobot
What's that smell? I think this tiny ad may have stepped in something.
a bit of art, as a gift, that will fit in a stocking