On Sat, 2002-03-30 at 16:16, Uros Gruber wrote: > Hi! > > This I simply don't understand why this code executes that > way. So there is only inportant to put return after recursive > call and it works like i wan't. I sometimes write small C > programs and I don't remeber that code like this have to work > that way.... Hm.
Well, that's how it's supposed to work. Look at it like this: 1: function test() { 2: static $count = 0; 3: $count++; 4: echo $count; 5: if ($count < 10) { 6: test(); 7: } 8: echo 'j'; 9: } So the first thing that happens is you call test(). It executes its lines in order, including function calls. When it hits the call to test() on line 6, it calls test(), waits for it to return, and then continues on to line 8, echoing 'j'. This happens every time through, so when you get up to $i == 10, you have 10 test()s stacked up, each of them waiting on line 6 for the function call to test() to return. As each test() call returns, execution continues on to line 8, echos j, then returns. I'm in a hurry so I don't have too much time to make this much clearer (and my brain is not so good today anyway). If this still doesn't make sense then Google gives a zillion hits for 'introduction to recursion'. Hope this helps, Torben > -- > bye, > Uros mailto:[EMAIL PROTECTED] > > > Sunday, March 31, 2002, 1:10:30 AM, you wrote: > > LTW> On Sat, 2002-03-30 at 15:59, Uros Gruber wrote: > >> Hi! > >> > >> This is a code > >> > >> function Test() > >> { > >> static $count = 0; > >> > >> $count++; > >> echo $count; > >> if ($count < 10) { > >> Test (); > >> } > >> echo "j"; > >> } > >> test(); > >> > >> Output is > >> > >> 12345678910jjjjjjjjjj > >> > >> Why is there 10 j at the and. If this would work it can be > >> only one. If $count is grater than 10 it does not call itself > >> but end. Is this maybe a bug or what. > > LTW> No, there should be 10 of them, since every time Test() returns, > LTW> the function carries on executing. If you only want one 'j' > LTW> printed then put a return statement after the call to Test(): > > LTW> function Test() > LTW> { > LTW> static $count = 0; > > LTW> $count++; > LTW> echo $count; > LTW> if ($count < 10) { > LTW> Test(); > LTW> return; > LTW> } > LTW> echo "j"; > LTW> } > LTW> Test(); > > > LTW> Cheers! > > LTW> Torben > > > LTW> -- > LTW> Torben Wilson <[EMAIL PROTECTED]> > LTW> http://www.thebuttlesschaps.com > LTW> http://www.hybrid17.com > LTW> http://www.inflatableeye.com > LTW> +1.604.709.0506 > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > -- Torben Wilson <[EMAIL PROTECTED]> http://www.thebuttlesschaps.com http://www.hybrid17.com http://www.inflatableeye.com +1.604.709.0506 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php