Mutual recursion. Horrible example, don’t use this:
even 0 = true
even n = not (odd n-1)
odd 0 = false
odd n = not (even n-1) even 0 = true
even n = not (odd n-1)
odd 0 = false
odd n = not (even n-1) even 0 = true
even n = odd n-1
odd 0 = false
odd n = even n-1
I fed a C version of this (with unsigned n to keep the nasal daemons at bay) to clang and observed that it somehow manages to see through the mutual recursion, generating code that doesn't recurse or loop.