recursion homework