Choosing the right data structure depends on your problem and the tasks that need to be performed in order to solve that problem. You want to choose a data structure that will have the best performance trade-offs for what matters most to solving your problem (ideally with an understanding of the target customer).
When you write a recursive function, you have to tell it when to stop recursing. Make sure every recursive function has two parts: the base case an the recursive case.