|
|
|
| Как в рекурсивной функции сделать счетчик?
Она массив формирует, что бы индекс массива задавать. | |
|
|
|
|
|
|
|
для: Zilog
(18.02.2009 в 21:17)
| | смысл такой:
<?
function rekurs($arg, $arg2=0){
/*Обработка твоя*/
if(/*Твое условие*/){
rekurs($arg, ++$arg2);
}
}
rekurs('arg');
|
П.С. заметь, что намного менее ресурсоемко использовать циклы, без рекурсивных функций... | |
|
|
|
|
|
|
|
для: nikita2206
(18.02.2009 в 21:33)
| | >П.С. заметь, что намного менее ресурсоемко использовать циклы, без рекурсивных функций...
согласен. Лет 15 назад я писал на ассемблере. В т.ч. и потому, что непонимал, как можно писать, скажем, на паскале или сях, ибо они жрут драгоценную память, ресурсы, процессорное время... Мы в своё время каждый такт экономили (это ещё со Спектрума привычка). Прошло время, и те, кто писал на этих самых сях - оказались впереди, а я вот сижу и туплю над элементарными вещами. Понмаешь? Да, ресурс есть ресурс. Но пошло оно всё в задницу, если я могу сделать читабельный и красивый код.
Ps. это хостер путь думает о ресурсах. Нечего бабло экономить - серваки надо апгрейдить.
Даёшь рекурсию!
спасибо за ответ. | |
|
|
|
|
|
|
|
для: nikita2206
(18.02.2009 в 21:33)
| | >смысл такой:
что то я смысла не понял, кстати.
что происходит в твоем примере? где счетчик то?
и ещё момент: массив тоже не собирается в рекурсии. Не понимаю, что делать? | |
|
|
|
|
|
|
|
для: Zilog
(18.02.2009 в 22:22)
| | ну это у вас массив собирается, а у меня просто пример)
а счетчик это $arg2 - необязательный параметр в функции, который равен 0 поумолчанию
там вызывается функция rekurs($arg, ++$arg2); если вы непонимаете что значит ++$arg2, что мало верится учитывая ваш опыт в асм, то это ровно-сильно такому выражению: ($arg2 + 1)
в итоге мы получаем функцию в которой вызывается эта же функция, но с каждым вызовом аргумент $arg2 становится на 1 больше, и, это и есть ваш счетчик. | |
|
|
|
|
|
|
|
для: nikita2206
(18.02.2009 в 22:48)
| | ++ я знаю что делает :) Меня этот пресловутый "необязательный парематр" смутил.
просто по факту я наблюдаю такую картину: при выходе из рекурсии функция вспоминает старое значение этой переменной. Если его вывести на экран, получатся что то вроде этого: 122234455332
ps Я пока забил на эту проблему. Решил список прямо оттуда выводить (ранее предполагал, что массивчик может бы в будущем сгодился). Решение не горит, но если кто нибудь подскажет как всё это сделать - буду премного благодарен. | |
|
|
|
|
|
|
|
для: Zilog
(18.02.2009 в 23:36)
| | вообще-то есть такая штука как static .
Даже в ассемблере :) | |
|
|
|
|
|
|
|
для: Trianon
(19.02.2009 в 00:08)
| | >вообще-то есть такая штука как static .
>Даже в ассемблере :)
нет, в асме всё банально: есть либо ячейча памяти, либо регистр. Стек, и другие извраты припоминать не будем. Всё остальное - это надстройки компилятора, образно говоря. Хотя, на современных процах может что интересное и появилось, незнаю, я уже давно не кодил.
Со static намёк понял, будем изучать. Спасибо! | |
|
|
|