How to do hard things
I am a 4th semester CS student from Germany and still don't grasp recursion, even though I already took the data structures & algorithms courses.  
If you did have something like a magic moment where it made sense to you, please enlighten me as I would really like to truly gain an intuition (and implement a parallelized msd-radixsort for learning-purposes because I failed to do this assignment yesterday).