Да, есть трассировка стека для каждой передачи указателя на новое место. И чтобы реализовать рекурсию, вам нужно возвращать что-то в каждом случае if-else или, по крайней мере, после каждого if-else, вам нужно выполнить некоторую операцию и сохранить результат в ячейке памяти, которая является глобальной и доступной в любом месте из вашего код.