WARNING: The instructor is not currently available to answer questions regarding this course
Even if the concept of recursion is simple, a lot of people struggle with it (not understanding the recursive process, not being able to figure out the base cases and recursive cases...), this is why I wanted to create a course on recursion that explains it and illustrates it in detail, it also contains 11 solved and explained coding problems to practice.
WARNING: The instructor is not currently available to answer questions regarding this course
Even if the concept of recursion is simple, a lot of people struggle with it (not understanding the recursive process, not being able to figure out the base cases and recursive cases...), this is why I wanted to create a course on recursion that explains it and illustrates it in detail, it also contains 11 solved and explained coding problems to practice.
And knowing recursion will also give you a new way of thinking, which is dividing the problem into multiple instances of the same problem, which will help you understanding techniques like dynamic programming, backtracking...
See you in the first lecture.
The course covers:
What is recursion
Code and execution
Base cases and recursive cases
Multiple recursive calls process
Call stack
Recursion tree
How to visualize the process
Recursive functions complexity analysis (time and space comp)
Recursion vs Iteration
How to optimize a recursive function (memoization and dynamic programming)
Divide-and-conquer
Backtracking
Recursive data structures
Tail recursion
Double recursion
How to think recursively
Plus 11 solved and explained coding problems to practice:
Sum of digits
Count occurrences
Has adjacent duplicates
Reverse string
Minimum cost path in matrix
All possible phrases
Keypad combinations
String subsequences
Binary numbers with at most 2 zeros
Word search
Array permutations
Why you should take this course:
Detailed explanation of how the recursive process works
Animated examples
Good audio/video quality
Real English captions
Contains coding problems to practice
Ability to ask questions if you don't understand something
What is recursion?
How to always win the tower of Hanoi game with recursion
Examples of recursion
How is a recursive function made?
Base cases and recursive cases
How to write a recursive function?
What happens when a recursive function gets executed?
Call stack
What are base cases and recursive cases?
How to identify base cases and recursive cases?
Difference between a recursive function with one recursive call and with multiple recursive calls
Why do we need the recursion tree?
How to draw the recursion tree?
"ways to climb stairs" example
How to add some code to be able to visualize the call stack
Example on "merge sort"
How to add some code to be able to visualize the recursion tree
Example on "ways to climb stairs"
Introduction to time complexity analysis of recursive functions
How to analyze the time complexity of a recursive function by using the recursion tree
How to analyze the time complexity of a recursive function by using the recurrence relation (substitution method)
How to analyze the time complexity of a recursive function by using the Master theorem method
How to analyze the space complexity of a recursive function
The difference between iteration and recursion
When to choose iteration?
When to choose recursion?
How to transform a recursive function into an iterative one?
How to transform an iterative function into a recursive one?
What is memoization?
How does it work?
How to implement memoization?
How to optimize "ways to climb stairs" solution with memoization?
Process demonstration
Solution code
What is dynamic programming?
How does it work?
"Fibonacci nth term" example
How to optimize "ways to climb stairs" solution with dynamic programming?
Process demonstration
Solution code
What is divide-and-conquer?
"Merge sort" example
"Karatsuba algorithm" example
Decrease-and-conquer
What is backtracking?
"Combinations with valid weight" example
"N-queens" problem description
Solution explanation
Process demonstration on an example
Solution code
What is a recursive data type?
What is a linked list?
Traversal and searching example
What is a tree?
Recursive manipulations examples
What is a graph?
DFS traversal
What is tail recursion?
The benefit of using tail recursion
How to transform a non-tail-recursive function into a tail-recursive one
"Factorial" example
"Replace in array" example
"Sum to n" example
"a power b" example
"get minimum" example
"binary tree inorder traversal" example
"Fibonacci nth term" example
What is double recursion?
"Ackermann function" example
Understanding
Dividing the problem into sub-problems
Trusting the recursive process
Visualizing the recursive process
Practising
"Sum of digits" problem description
Solution explanation
Process demonstration on an example
Solution code
"Count occurrences" problem description
Solution explanation
Process demonstration on an example
Solution code
"Minimum cost path in matrix" problem description
Solution explanation
Process demonstration on an example
Solution code
"Has adjacent duplicates" problem description
Solution explanation
Process demonstration on an example
Solution code
"Reverse string" problem description
Solution explanation
Process demonstration on an example
Solution code
"All possible phrases" problem description
Solution explanation
Process demonstration on an example
Solution code
"Keypad combinations" problem description
Solution explanation
Process demonstration on an example
Solution code
"String subsequences" problem description
Solution explanation
Process demonstration on an example
Solution code
"Binary numbers with at most two zeros" problem description
Solution explanation
Process demonstration on an example
Solution code
"Word search" problem description
Solution explanation
Process demonstration on an example
Solution code
"Array permutations" problem description
Solution explanation
Process demonstration on an example
Solution code
OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.
Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.
Find this site helpful? Tell a friend about us.
We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.
Your purchases help us maintain our catalog and keep our servers humming without ads.
Thank you for supporting OpenCourser.