powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / рекрусивная функция
6 сообщений из 6, страница 1 из 1
рекрусивная функция
    #34841733
farbox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, доброго вам дня или уже вечера!

Вот сталкнулся с задачей и впал в ступор можно ли такое сделать ....
скажите ..
допустим есть

sub BGG(aa as long)
.....................ax = aa+.....
call bgg(ax)
................
end sub

как мне ограничить число вложений ????
подскажите плиз.
то есть я допустим из маина вызываю эту процедуру и хочу что бы она отработала 20 раз.
как это сделать ?


__________________________________________________________
Я знаю, что ничего не знаю.
Сократ.
...
Рейтинг: 0 / 0
рекрусивная функция
    #34841817
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
farbox,
заведи переменную-счётчик вложенности. Опиши её вне процедуры, или внутри как Static. Инкрементируй по входу и проверяй: как достигнет предела - на выход.
...
Рейтинг: 0 / 0
рекрусивная функция
    #34842545
farbox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но вот в том то и заморочка логическая :
эта переменная будет с каждым циклом (даже не последнего уровня вложенности) наращиваться.
как всё таки сделать ограничение числа вложений ?
может я правда плохо понял .... поясните на примерах.

__________________________________________________________
Я знаю, что ничего не знаю.
Сократ.
...
Рейтинг: 0 / 0
рекрусивная функция
    #34842628
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Const MAX_CALL_COUNT As Long =  20 
Public Sub TestRec(ByVal p_Val As Long)
    Static counter As Long
    counter = counter +  1 
    Debug.Print counter
    If counter = MAX_CALL_COUNT Then Exit Sub
    Call TestRec(counter)
End Sub
...
Рейтинг: 0 / 0
рекрусивная функция
    #34842863
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
farboxно вот в том то и заморочка логическая :
эта переменная будет с каждым циклом (даже не последнего уровня вложенности) наращиваться.
как всё таки сделать ограничение числа вложений ?
может я правда плохо понял .... поясните на примерах.

Ну какая проблема - передавай ее как аргумент... Можно и количество циклов передавать еще:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Dim i as Integer, k as Integer

i =  0 : k= 5 
MyFunc i, k
...
i =  0 : k= 20 
MyFunc i, k


Declare Function MyFunc( i As Integer, k as Integer)
     i=i+ 1 
     If i > k Then
           Msgbox "Ругаемся что слишком зациклились": Exit Function
     End If
     ....
     MyFunc i, k
     ...
End Function
...
Рейтинг: 0 / 0
рекрусивная функция
    #34844602
farbox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое
допёр спасибо всем откликнувшимся!


__________________________________________________________
Я знаю, что ничего не знаю.
Сократ.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / рекрусивная функция
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]