Graph
A function calling itself sounds illegal. A good base case makes it beautifully predictable.
int factorial(int n)
int sum_to_n(int n)
int digit_sum(int n)
int power(int base, int exp)
void descend(int n, void (*on_enter)(int), void (*on_leave)(int))
Print the sequence of moves that solves the Tower of Hanoi for a given disk count