Да, в начале каждого вызова функции вы вызываете стек и сохраняете необходимые значения, а в конце функции (эпилог) вы должны сбросить стек на его позицию, иначе вы будете восстанавливать недопустимые переменные и данные из стека.
Мое предложение будет заключаться в том, чтобы при каждом вызове указывать адрес массива укусов и количество элементов в массиве и возвращать номер итерации (и непосредственно перед итерацией проверки рекурсивного вызова> количество массивов, и переходить к вашему эпилогу). ), а также общее количество вхождений.
Быстрое размышление в моей голове говорит мне, что, если вы реализуете это правильно, это должно работать. У меня, к сожалению, нет времени, чтобы написать пример подобного из этой минуты (я должен скоро уйти в класс), но теория должна быть обоснованной. Я могу взглянуть на ваш код и, возможно, помочь позже и / или написать короткий пример сегодня.