Hi,

Ok, no I understand why. So this explains why every function
must have return. But how can i program for example one
recursion or where to put return so that test would not be
waiting for return but at the end of this recursion i would
like to do something with that $count for example.

Hmm i wrote this very strange i hope you understand.

I tell it simpler.

I would like something is executed x many times (for such
long if sentence is true) and thene do sometnihg else and
continue with program, not looping here.

-- 
tia,
 Uros                            mailto:[EMAIL PROTECTED]


Sunday, March 31, 2002, 1:34:20 AM, you wrote:

LTW> 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.

LTW> Well, that's how it's supposed to work. Look at it like this:

LTW> 1: function test() {
LTW> 2:    static $count = 0;
LTW> 3:    $count++;
LTW> 4:    echo $count;
LTW> 5:    if ($count < 10) {
LTW> 6:        test();
LTW> 7:    }
LTW> 8:    echo 'j';
LTW> 9: }


LTW> So the first thing that happens is you call test(). It executes
LTW> its lines in order, including function calls. When it hits the
LTW> call to test() on line 6, it calls test(), waits for it to 
LTW> return, and then continues on to line 8, echoing 'j'. 

LTW> This happens every time through, so when you get up to $i == 10, you
LTW> have 10 test()s stacked up, each of them waiting on line 6 for the
LTW> function call to test() to return. As each test() call returns,
LTW> execution continues on to line 8, echos j, then returns.

LTW> I'm in a hurry so I don't have too much time to make this much 
LTW> clearer (and my brain is not so good today anyway). If this still
LTW> doesn't make sense then Google gives a zillion hits for 'introduction
LTW> to recursion'.


LTW> Hope this helps,

LTW> 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
>> 
>> 


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to