Thinking recursively is crucial when it comes to problem solving in general. Recursion comes up a lot when you are doing any kind of exhaustive search kind of problem. For example how do you find all the permutation of a given set? The problem says it all. You can not use any clever technique to find them all. Because? You need to find them all :) .

Any problem that states that you need find all or search all or permute all that automatically triggers a backtracking problem.

I feel like backtracking is the big brother of recursion. If you know a b c of recursion then you have not yet seen its big brother.

While studying (still studying) recursion and his big brother these are the couple of resources i was trying to grasp as much as i could. You can check them out.

I would highly recommend these resources to anyone who is having hard time understanding recursion or backtracking.

V. Anton Spraul's backtracking video was really helpful as well as his recursion chapter from the book (Was glad to find out he made the chapter for free).

And tushar roy and backtobackswe already became legend in their teaching method. No need to introduce them again.

Also read the recursion chapter from Data Structures and Algorithms in Java by Goodrich, Tamassia, and Goldwasser. Got reference of this book from John Washam from one of his article.

Still long way to go...

You can find my daily practice from this daily-coding-prep github repo.