Bè se posso darti qualche dritta io seguirei questa strada:

1)Cerca il caso in cui si ferma la ricorsione: nel caso di array e liste in genere quando le hai scorse tutte o si è verivicata una determinata condizione. Il caso in cui si ferma la ricorsione deve essere la prima istruzione di controllo all'interno della funzione.

2)Cerca di gestire le condizioni in modo tale da richiamare la funzione stessa.

Sembra banale ma credo che con questi due punti si risolvono una grossa fetta di problemi ricorsivi.

P.S. Che università fai?Se naturalmente puoi/vuoi dirlo