powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
25 сообщений из 31, страница 1 из 2
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32220628
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поймал я тут вчерась Лохову ссылку, да и сунул http://www.firststeps.ru/vba/excel/r.php?30 ]туда свой шибко любопытный нос (носик, носяру, носище, рубильник, шнобель... как правильно?). А там!!! Батюшки!!! Переполнением стека (стейка, стука, стока) грозятся! Вот и думаю "Рекурсить или не рекурсить?". А ну как переполнение, что польется? И как спасаться?

Буду весьма признателен за успокоение от мрачных мыслей.
Надеюсь (уповаю, жажду, мечтаю) на помощь опытных товарищей, съевших на ней собаку.

За сим, вечно Ваш. Витал.
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32220784
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой совет.Если можешь обойтись без рекурсии-обходись.
А если нет-то нет. :)
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32220794
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажись, не я один такой пужатый.

За ссылку миль пардон-с здесь она Лоховая
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32220805
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переполнение стека у тебя возникнет при о-о-очень большой глубине рекурсии.
В реальной жизни так не бывает. Если такое возникнет - значит ты где-то в алгоритме ашипся и заloopился случайно
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32220822
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит 60-70 рекурсий потянет?
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32220828
Фотография progist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как можно бояться новых методов в программировании?
Волков бояться - в лес не ходить.
Рекурсия - вещь классная, при обработке иерархических записей (меню, дерева) трудно найти более правильное решение.
Использование рекурсии резко уменьшает массу кода, следовательно и количество возможных ошибок.
Переполнение стека можно избежать разного рода счетчиками или правильной конструкцией.
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32220829
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщето любую рекурсию можно переписать сохраняя промежуточный
результат во временных таблицах. Получется несколько громоздко ,
но работает быстрее (по крайней мере для MSSQL) и никаких переполнений.
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32220842
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
progist
Переполнение стека можно избежать разного рода счетчиками или правильной конструкцией.
А подробнее?? Если можно.
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32220870
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит 60-70 рекурсий потянет?
Код: plaintext
1.
2.
3.
Public Function TestStack(i As Long)
    Debug.Print i
    TestStack i +  1 
End Function

У меня сваливается на 4716-й итерации. Хм... Я себе предсавил дерево с 4716 уровнями вложености... Это ж какой тривью нужон...

2 progist
Переполнение стека можно избежать разного рода счетчиками или правильной конструкцией
А зачем???
Если тебе столько не хватило - бог тебе судья, пусть прога в ошибку валится и работу прекращает. Ничего лучше все равно не получится сделать.
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32220873
Фотография progist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
честно говоря, про счетчики только читал и то давно. Сам всегда обхожусь без них.
Если рекурсия нужна для прожождения какой-либо ветви иерарх... структуры, она обязательно кончится и переполнения не будет. Чем меньше расход памяти процедурой (малое количество переменных и т.д.), тем больше вызовов можно выполнить.
Но повторяю, ни разу не сталкивался с проблемой переполнения и не вникал в нее.
Максимум, что обрабатывал - до 10 - 15 влоожений в таблицах до 100 000 записей
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32220881
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем огромный сенька!!
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32220901
Фотография progist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отвечал Виталу, а получилось еще и Лоху
На рекурсию не тянет, больше похоже на полиморфизм, наверное, или перегруженную функцию :)
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32220910
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем меньше расход памяти процедурой (малое количество переменных и т.д.) А ежели перед вызовом очищать переменные (или объявлять заново), это как-то повлияет?
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32220914
Фотография progist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 лох

кстати, попробуй эту же функцию, но обяви ее не как Variant, а как integer или Long

Количество интераций должно увеличиться
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32220936
Фотография progist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 vital

Лох наглядно показал сколько может быть.
Забудь об этой проблеме, когда возникнет - пиши, будет интересно посмотреть.
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32220937
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Public Function TestStack(i As Long)
dim s as string
dim p
dim rs as new adodb.recordset
.......
' еще штук двадцать переменных    
Debug.Print i
    TestStack i +  1 
End Function
да еще и ошибка какая нибудь в условии выхода из рекурсии?
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32220951
Фотография progist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй, потом расскажешь
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32220984
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 VIG
еще штук двадцать переменных
По идее локальные переменные не должны влиять на стек. Проверять лениво...
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32221003
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Л.П
Еще как влияют,даже если они только обьявлены и нигде не используются
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32221050
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да уж... действительно влияют...
Поделом мне дураку. Не фиг лениться.
Кто бы мог подумать...
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32221072
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще как влияют,даже если они только обьявлены и нигде не используются
А параметры? Если не объявлять локальные переменные, а передавать как параметры?
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32221075
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня пример ЛП завалился на 5217 итерации. У кого-нибудь м.б. завалиться и на 100 - хотя и такое дерево представить сложно.


Если же добавить локальную перемную, то п%здец наступит быстрей
(a = Space(15000000) на 27 шаге исчерпано вся память ПК (1Гб)) - неплохой пример тестирования менеджера управления памитью виндоуса :)

Таким образом: рекурсии применять можно, но ... осторожно
В некотрых случаях без них никуда (например, если не ошибаюсь, расчет факториала)

==
А каков размер стека (ошибка 28. Out of stake space)?
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32221094
am (a_mitin)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В некотрых случаях без них никуда (например, если не ошибаюсь, расчет факториала)
Расчет факториала наоборот является ярким примером хвостовой рекурсии, когда рекурсивный шаг - последнее действие в функции. От такого рода рекурсии очень легко (и нужно) избавится обычным циклом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Function Factorial(ByVal N As Integer) As Double
Dim value As Double
	value =  1 
	Do While N >  1 
		value = value * N
		N = N -  1 		
	Loop
	Factorial = value
End Function

Хотя согласен, что есть случаи, когда без них - никуда.
Вообще всем, кто интересуется данным вопросом я бы порекомендовал книжку Рода Стивенса "Алгоритмы на VB" (название примерное, точно не помню). Там всё популярно написано.
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32221102
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Витал
А параметры? Если не объявлять локальные переменные, а передавать как параметры?
тоже самое-В стек,сэр!
2Сенин Виктор
В некотрых случаях без них никуда (например, если не ошибаюсь, расчет факториала)
Ой ли?
Код: plaintext
1.
2.
3.
4.
5.
6.
 function FUCKtorial(n as integer) as long
   dim i as integer
   fucktorial= 1 
   for i= 1  to n
      fucktorial=fucktorial * i
   next i
end function
...
Рейтинг: 0 / 0
Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
    #32221112
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виктора Сенина - в первый класс с почетом!

На 2083 посту научился факториал считать
С кем не бывает
З.Ы. Я это... не со зла стебусь... прикольно просто..
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите!!!! Меня Лох напугал. Для любопытных - это про рекурсию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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