Будут ли локальные переменные независимы в рекурсивно вызванной функции Lotusscript? - PullRequest
1 голос
/ 25 марта 2020

Если у меня есть рекурсивная функция (Lotusscript), и внутри функции есть локально объявленная переменная, будет ли каждая итерация вызова сохранять переменные независимо сохраненными в памяти?

Например, у меня есть счетчик на основная функция, которая зацикливается 10 раз .... она вызывает рекурсивную функцию, и в определенных обстоятельствах она будет вызывать сама себя ... но каждый раз в качестве аргумента передает другой объект. У рекурсивной функции есть собственная переменная-счетчик, объявленная локально.

Предположим, что эта основная функция вызывается, и она вызывает рекурсивную функцию один раз и начинает al oop, считая до десяти сама. 5-го числа oop она сама себя называет. Эта рекурсия закончится из-за установки глобального логического значения, и теперь у меня есть три известные локальные переменные, основная функция и две из рекурсивной функции.

Будет ли каждый из этих счетчиков отслеживаться независимо, так что в зависимости от того, в какой функции я нахожусь, он знает, где он находится в своих десяти циклах?

Надеюсь, я ясно дал понять. Я пробую простую функцию проверки концепции, но она действительно сбивает с толку.

Спасибо

1 Ответ

1 голос
/ 26 марта 2020

Да, это будет независимо: локальные переменные являются локальными для каждого вызова в рекурсии, если вы не используете их в качестве параметров, поскольку они по умолчанию являются:

Sub RecurseMe( intParameter as Integer )
   Dim intCount as Integer
   Print "Called with:", intParameter
   intParameter = intParameter + 1
   intCount = intCount + 1
   Print "IntCount: ", intCount
   If intParameter < 3 then
      Call RecurseMe( intParameter )
   End If
   Print "Exiting with: ", intParameter
End Sub

Dim intTest as Integer
intTest = 1
Call RecurseMe( intTest )
Print "Final result: ", intTest

Будет выводить:

Вызывается с: 1
IntCount: 1
Вызывается с: 2
IntCount: 1
Выход с: 3
Выход с: 3
Финал результат: 3

Как вы видите: intCount всегда переинициализируется в sub, intParameter даже будет изменен в вызывающем sub.

...