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