[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Рекурсия
Tato
Всем привет!
Как начинающий в php не могу понять как работает рекурсия в приведенных мною примерах.
Как известно любой php код работает сверху вниз. Поэтому для ясности я с лева приписал числа что бы описать внутреннее движение функции.
Например по моему в примере 1 движение следующее(скорее я ошибаюсь но все таки к примеру)
9>2>3>4>5>6(тут включается рекурсивный вызов функции и он повторяется 19 раз. внутренее движение функции ) при последнем 19 проведении
рекурсия должна выдать:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
а выдает:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
я догадываюсь что в:
6. recursion_w($rec++); переменная $rec=20
но не могу понять как она выводится,ведь echo находится до этого, в цыфре 5?

Пример 1

1. <?php
2. function recursion_w($rec){
3. if($rec<20){
4. static $rec;
5. echo "$rec ";
6. recursion_w($rec++);
7. }
8. }
9. recursion_w($a);
10.?>


Второй вопрос:
пример 2, код:

1. <?php
2. function recursion_w($rec){
3. if($rec<20){
4. static $rec;
5. recursion_w($rec++);
6. echo "$rec ";
7. }
8. }
9. recursion_w($a);
10.?>

Когда перемещаю echo и ставлю после рекурсивного вызова функции(5. recursion_w($rec++); 6. echo "$rec ";)
выдает число 21 21раз:
21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21

Не могу понять почему?




Пример 3
код:
1. <?php
2. function recursion_w($rec){
3. if($rec<20){
4. echo "$rec ";
5. recursion_w($rec+1);
6. }
7. }
8. recursion_w($a);
9.?>

Выдает:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
это понятно но когда в примере 4 перемещаю echo(5. echo "$rec ";) после рекурсии(4. recursion_w($rec+1); ) происходит обратный по уменьшению вывод чисел:

Код:
Пример 4
код:
1. <?php
2. function recursion_w($rec){
3. if($rec<20){
4. recursion_w($rec+1);
5. echo "$rec ";
6. }
7. }
8. recursion_w($a);
9.?>

Вывод:
19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

Объясните пожалуйста почему изменилось направление в сторону уменьшения?
для четкости понимания укажите пожалуйста внутреннее движение функции с помощью нумерации
проставленной у каждой строчки кода (пример 3. || 8>2>3>4>5(рекурсия (5>3>4) проводится 19 раз)).

Приношу свои извинения за количество вопросов!!!
Благодарю заранее.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.