Yes, your code structure is correct.
Recursion, in general, means that some function eventually get called by some combination of functions that it called.
The classic factorial implementation
def factorial(n):
    if n <= 1:
        return 1
    else:
        return n*factorial(n-1)
where factorial() calls itself, is an example of 
direct recursion.
Your test case, where ifCompile() calls statementCompile() calls ifCompile() is an example of 
indirect recursion.
--Mark