Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как работает рекурсия?
 
 автор: Читатель   (05.04.2011 в 03:26)   письмо автору
 
 

Код привожу в очень сжатом виде, чтобы была видна только суть вопроса.
Не могу понять, как работает рекурсия и как правильно прописать рекурсивный вызов, чтобы получить ожидаемый результат.


<?php
  
function expl_str($str,$array)
  {

          
$new_str  '';
          
$strl_str strlen($str);


          if(
$strl_str == 5$array[] = $str;
          else if(
$strl_str 5)
          {
                  
// условия и в конечном итоге
                  
$array[]    = substr($str,0,6);
                  
$new_str substr($str,6);
          }


          if(
strlen($new_str) > 4expl_str($new_str,$array);
          else if(!empty(
$array))                // если не убрать else - то не возвращается вообще ничего
          
{
                  
// тут еще ряд проверок на кол-во елементов в массиве, 
                  // но в конечном итоге результирующий массив - $result
          

          else 
$result = array(0,0,0,0);

          
// если здесь вывести print_r($result); то все выводится верно, но в обратном порядке: от последнего нужного результата к первому

          
return $result;                        // возвращает первый результат вместо последнего

  
}


  list(
$v1,$v2,$v3,$v4) = expl_str($str,array());


  echo 
$v1.'<br />';
  echo 
$v2.'<br />';
  echo 
$v3.'<br />';
  echo 
$v4.'<br />';

  Ответить  
 
 автор: Читатель   (05.04.2011 в 04:03)   письмо автору
 
   для: Читатель   (05.04.2011 в 03:26)
 

Легла спать. Приснился Trianon, грозящий мне указкой. Проснулась. Исправила.

if(strlen($new_str) > 4) $array = expl_str($new_str,$array);


Все заработало. Trianon, спасибо.

  Ответить  
 
 автор: SHAman   (05.04.2011 в 09:59)   письмо автору
 
   для: Читатель   (05.04.2011 в 04:03)
 

Лучший пост на этом форуме ever!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования