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

Форум PHP

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

 

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

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

тема: Как в рекурсивной функции сделать счетчик?
 
 автор: Zilog   (18.02.2009 в 21:17)   письмо автору
 
 

Как в рекурсивной функции сделать счетчик?

Она массив формирует, что бы индекс массива задавать.

  Ответить  
 
 автор: nikita2206   (18.02.2009 в 21:33)   письмо автору
 
   для: Zilog   (18.02.2009 в 21:17)
 

смысл такой:
<?
function rekurs($arg$arg2=0){
 
/*Обработка твоя*/
 
if(/*Твое условие*/){
  
rekurs($arg, ++$arg2);
 }
}
rekurs('arg');

П.С. заметь, что намного менее ресурсоемко использовать циклы, без рекурсивных функций...

  Ответить  
 
 автор: Zilog   (18.02.2009 в 21:46)   письмо автору
 
   для: nikita2206   (18.02.2009 в 21:33)
 

>П.С. заметь, что намного менее ресурсоемко использовать циклы, без рекурсивных функций...

согласен. Лет 15 назад я писал на ассемблере. В т.ч. и потому, что непонимал, как можно писать, скажем, на паскале или сях, ибо они жрут драгоценную память, ресурсы, процессорное время... Мы в своё время каждый такт экономили (это ещё со Спектрума привычка). Прошло время, и те, кто писал на этих самых сях - оказались впереди, а я вот сижу и туплю над элементарными вещами. Понмаешь? Да, ресурс есть ресурс. Но пошло оно всё в задницу, если я могу сделать читабельный и красивый код.

Ps. это хостер путь думает о ресурсах. Нечего бабло экономить - серваки надо апгрейдить.
Даёшь рекурсию!

спасибо за ответ.

  Ответить  
 
 автор: Zilog   (18.02.2009 в 22:22)   письмо автору
 
   для: nikita2206   (18.02.2009 в 21:33)
 

>смысл такой:

что то я смысла не понял, кстати.
что происходит в твоем примере? где счетчик то?

и ещё момент: массив тоже не собирается в рекурсии. Не понимаю, что делать?

  Ответить  
 
 автор: nikita2206   (18.02.2009 в 22:48)   письмо автору
 
   для: Zilog   (18.02.2009 в 22:22)
 

ну это у вас массив собирается, а у меня просто пример)
а счетчик это $arg2 - необязательный параметр в функции, который равен 0 поумолчанию
там вызывается функция rekurs($arg, ++$arg2); если вы непонимаете что значит ++$arg2, что мало верится учитывая ваш опыт в асм, то это ровно-сильно такому выражению: ($arg2 + 1)
в итоге мы получаем функцию в которой вызывается эта же функция, но с каждым вызовом аргумент $arg2 становится на 1 больше, и, это и есть ваш счетчик.

  Ответить  
 
 автор: Zilog   (18.02.2009 в 23:36)   письмо автору
 
   для: nikita2206   (18.02.2009 в 22:48)
 

++ я знаю что делает :) Меня этот пресловутый "необязательный парематр" смутил.

просто по факту я наблюдаю такую картину: при выходе из рекурсии функция вспоминает старое значение этой переменной. Если его вывести на экран, получатся что то вроде этого: 122234455332



ps Я пока забил на эту проблему. Решил список прямо оттуда выводить (ранее предполагал, что массивчик может бы в будущем сгодился). Решение не горит, но если кто нибудь подскажет как всё это сделать - буду премного благодарен.

  Ответить  
 
 автор: Trianon   (19.02.2009 в 00:08)   письмо автору
 
   для: Zilog   (18.02.2009 в 23:36)
 

вообще-то есть такая штука как static .
Даже в ассемблере :)

  Ответить  
 
 автор: Zilog   (19.02.2009 в 00:32)   письмо автору
 
   для: Trianon   (19.02.2009 в 00:08)
 

>вообще-то есть такая штука как static .
>Даже в ассемблере :)

нет, в асме всё банально: есть либо ячейча памяти, либо регистр. Стек, и другие извраты припоминать не будем. Всё остальное - это надстройки компилятора, образно говоря. Хотя, на современных процах может что интересное и появилось, незнаю, я уже давно не кодил.

Со static намёк понял, будем изучать. Спасибо!

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

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