Recursion is a powerful technique that helps us bridge the gap between complex problems being solved with elegant code. Within this course, we will break down what recursion is, why you would and wouldn’t want to use it and look at a variety of examples for how it can be used.
We’ll break down recursion with all sorts of data-structures, animations, debugging and call-stack analysis to get a deeper understanding to these principles.
The code is written in Java, but the principles are agnostic to any language.
Course Contents
Introduction
What Is Recursion?
Explaining Recursion via ATM Analogy
Explaining Recursion via Essay Revision Analogy
Summarizing What Recursion Is
Why & Why Not Recursion
Understanding The Call Stack
Call Stack Analogy
Recursion With Strings Introduction
String Reversal Explanation
String Reversal Call Stack Animation
Palindrome Explanation
Palindrome Call Stack Animation
Recursion With Numbers
Decimal To Binary Explanation
Decimal To Binary Code & Debug
Sum of Natural Numbers Explanation
Sum of Natural Numbers Code & Debug
Divide & Conquer Algorithms
Binary Search Animation & Explanation
Fibonacci Explanation
Fibonacci Animation
Merge Sort Explanation & Animation
Merge Sort Code & Debug
Linked Lists
Linked List Reversal Animation
Linked List Code & Debug
Merge Two Sorted Linked Lists Animation
Merge Two Sorted Linked Lists Code & Debug
Trees
Insert Value Into Binary Search Tree Animation
Insert Value Into Binary Search Tree Code Walkthrough
Insert Value Into Binary Search Tree Call Stack Animation
Print All Leaf Nodes Explanation
Print All Leaf Nodes Code & Debug
Graphs
Depth-First Search Animation
Depth-First Search Code Walkthrough
Recursion Optimizations
Memoization & Caching
Tail-Call Recursion
Conclusion
