[Rob']: I don't know why Sun have done it, but the iteration variable must always be declared inside the loop itself. You can't use a previously declared variable.
I guess because there's really no benefit to reusing an existing variable here (unless perhaps you're doing a lot of deep recursion and are reunning out of stack space). Any previous value of the variable will be overwritten anyway, and in general it just makes the code more confusing if the variable is declared away from where it's used. I guess they're just encouraging good style.