Most (all?) of the recursive examples we have seen involve a single function.
You should be used to taking an interative function an turning it into a recursive function, and taking a tail-recursive function and converting it to an iterative function. If you have a function with a pair of nested loops, it is often possible to model the function as a pair of functions which call each other. The first function models the iteration of the outer loop, and calls the second function to perform the inner loop. The second function models the behavior of the inner loop, and calls the first function when the inner loop exits. The second function may call itself a number of times before calling the first function again. I found using this idea useful in writing problem 3.5
