Массивы в рекурсивных функциях

ivankrkrkr

Новичок
Массивы в рекурсивных функциях

У меня в голове есть 2 утверждения:
1. В рекурсивных функциях массивы, переданные по значению сохраняются в стеке целиком для каждого шага рекурсивной функции, то есть если функция N раз вызывает сама себя, то в стеке будет N экземпляров массивов которые ей передаются.
2. В случае передачи массивов по ссылке, в стеке хранится просто N ссылок для каждого массива, которые занимают гораздо меньше памяти.

Верны ли эти утверждения или я не прав?
 

tony2001

TeaM PHPClub
>то есть если функция N раз вызывает сама себя, то в стеке будет N экземпляров
>массивов которые ей передаются.
переменная "разрушается" после выхода из области видимости.
соотв-но, каждый вложенный вызов - разные области видимости.
 

ivankrkrkr

Новичок
Но то, что рекурсивная функция "помнит" значение переменной для каждго вызова - это по определению и проверено.. в ней бы иначе смысла не было.
то есть функция может от M-й шага дойти до N-го (N>M), а потом опять вернуться к шагу M, а после - опять дойти до K-го шага (K>M). Пример - обход дерева в глубину.
Поэтому слова tony2001 насчет разрушения несколько смущают или я их неправильно понял? :)
 

Tor

Новичок
ivankrkrkr
да, твои утверждения верны

tony2001
да, разрушаются
но в рекурсии самая первая инкарнация функции жива, пока жива хоя бы еще одна дочерняя
 
Сверху