# Recursion: Python

Recursion gives you a new perspective on problem-solving by defining a problem in terms of itself.

Start## Key Concepts

Review core concepts you need to learn to master this subject

Call Stack Construction in While Loop

Modeling Recursion as Call Stack

Recursion in Python

Stack Overflow Error in Recursive Function

Recursion and Nested Lists

Fibonacci Sequence

Fibonacci Recursion

Binary Search Tree

Call Stack Construction in While Loop

Call Stack Construction in While Loop

A call stack with execution contexts can be constructed using a `while`

loop, a `list`

to represent the call stack and a `dictionary`

to represent the execution contexts. This is useful to mimic the role of a call stack inside a recursive function.

Recursion: Python

Lesson 1 of 2

- 1The best way to understand recursion is with lots of practice! At first, this method of solving a problem can seem unfamiliar but by the end of this lesson, we’ll have implemented a variety of algo…
- 2In the previous exercise, we used an iterative function to implement how a call stack accumulates execution contexts during recursive function calls. We’ll now address the conclusion of this funct…
- 3Now that we’ve built a mental model for how recursion is handled by Python, let’s implement the same function and make it truly recursive. To recap: We want a function that takes an integer as an …
- 4Excellent job writing your first recursive function. Our next task may seem familiar so there won’t be as much guidance. We’d like a function factorial that, given a positive integer as input, re…
- 5The previous exercise ended with a
*stack overflow*, which is a reminder that recursion has costs that iteration doesn’t. We saw in the first exercise that **every recursive call spends time on th… - 6Let’s use recursion to solve another problem involving lists: flatten(). We want to write a function that removes nested lists within a list
**but keeps the values contained.**nested_planets = [… - 7So far our recursive functions have all included a
**single**recursive call within the function definition. Let’s explore a problem which pushes us to use multiple recursive calls within the fun… - 8Data structures can also be recursive. Trees are a recursive data structure because their definition is self-referential. A tree is a data structure which contains a piece of data **and reference…

## How you'll master it

Stress-test your knowledge with quizzes that help commit syntax to memory