В сигнатуре функции есть параметр, который увеличивается с каждым вызовом. Когда он приблизится к максимальной глубине рекурсии, сделайте что-нибудь до того, как будет достигнуто.
Вот пример псевдокода ruby-ish:
def my_recursive_function(current_depth)
# do stuff
if current_depth >= MAX_RECURSION_LIMIT
# throw exception, or output helpful information or return default value
else
my_recursive_function(current_depth+1)
end
end