René's URL Explorer Experiment


Title: The Recursive Book of Recursion

direct link

Domain: inventwithpython.com

Nonetext/html;charset=utf-8

Links:

Title Pagehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-239
Copyrighthttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-240
Dedicationhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-241
About the Authorhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-13
Forewordhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-197
Acknowledgmentshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-207
Introductionhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-211
Who Is This Book For?https://inventwithpython.com/recursion/frontmatter.html#calibre_link-242
About This Bookhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-243
Hands-On, Experimental Computer Sciencehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-244
Installing Pythonhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-245
Running IDLE and the Python Code Exampleshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-246
Running the JavaScript Code Examples in the Browserhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-247
Part I: Understanding Recursionhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-215
Chapter 1: What Is Recursion?https://inventwithpython.com/recursion/frontmatter.html#calibre_link-248
The Definition of Recursionhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-249
What Are Functions?https://inventwithpython.com/recursion/frontmatter.html#calibre_link-250
What Are Stacks?https://inventwithpython.com/recursion/frontmatter.html#calibre_link-251
What Is the Call Stack?https://inventwithpython.com/recursion/frontmatter.html#calibre_link-252
What Are Recursive Functions and Stack Overflows?https://inventwithpython.com/recursion/frontmatter.html#calibre_link-253
Base Cases and Recursive Caseshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-254
Code Before and After the Recursive Callhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-255
Summaryhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-256
Further Readinghttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-257
Practice Questionshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-258
Chapter 2: Recursion vs. Iterationhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-259
Calculating Factorialshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-260
The Iterative Factorial Algorithmhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-261
The Recursive Factorial Algorithmhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-262
Why the Recursive Factorial Algorithm Is Terriblehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-263
Calculating the Fibonacci Sequencehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-264
The Iterative Fibonacci Algorithmhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-265
The Recursive Fibonacci Algorithmhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-266
Why the Recursive Fibonacci Algorithm Is Terriblehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-267
Converting a Recursive Algorithm into an Iterative Algorithmhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-268
Converting an Iterative Algorithm into a Recursive Algorithmhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-269
Case Study: Calculating Exponentshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-270
Creating a Recursive Exponents Functionhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-271
Creating an Iterative Exponents Function Based on Recursive Insightshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-272
When Do You Need to Use Recursion?https://inventwithpython.com/recursion/frontmatter.html#calibre_link-273
Coming Up with Recursive Algorithmshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-274
Summaryhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-275
Further Readinghttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-276
Practice Questionshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-277
Practice Projectshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-278
Chapter 3: Classic Recursion Algorithmshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-279
Summing Numbers in an Arrayhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-280
Reversing a Stringhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-281
Detecting Palindromeshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-282
Solving the Tower of Hanoihttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-283
Using Flood Fillhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-284
Using the Ackermann Functionhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-285
Summaryhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-286
Further Readinghttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-287
Practice Questionshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-288
Practice Projectshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-289
Chapter 4: Backtracking and Tree Traversal Algorithmshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-0
Using Tree Traversalhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-290
A Tree Data Structure in Python and JavaScripthttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-291
Traversing the Treehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-292
Preorder Tree Traversalhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-293
Postorder Tree Traversalhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-294
Inorder Tree Traversalhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-295
Finding Eight-Letter Names in a Treehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-296
Getting the Maximum Tree Depthhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-297
Solving Mazeshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-298
Summaryhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-299
Further Readinghttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-300
Practice Questionshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-301
Practice Projectshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-302
Chapter 5: Divide-and-Conquer Algorithmshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-14
Binary Search: Finding a Book in an Alphabetized Bookshelfhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-303
Quicksort: Splitting an Unsorted Pile of Books into Sorted Pileshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-304
Merge Sort: Merging Small Piles of Playing Cards into Larger Sorted Pileshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-305
Summing an Array of Integershttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-306
Karatsuba Multiplicationhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-307
The Algebra Behind the Karatsuba Algorithmhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-308
Summaryhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-309
Further Readinghttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-310
Practice Questionshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-311
Practice Projectshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-312
Chapter 6: Permutations and Combinationshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-198
The Terminology of Set Theoryhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-313
Finding All Permutations Without Repetition: A Wedding Seating Charthttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-314
Getting Permutations with Nested Loops: A Less-Than-Ideal Approachhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-315
Permutations with Repetition: A Password Crackerhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-316
Getting K-Combinations with Recursionhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-317
Get All Combinations of Balanced Parentheseshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-318
Power Set: Finding All Subsets of a Sethttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-319
Summaryhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-320
Further Readinghttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-321
Practice Questionshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-322
Practice Projectshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-323
Chapter 7: Memoization and Dynamic Programminghttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-208
Memoizationhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-324
Top-Down Dynamic Programminghttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-325
Memoization in Functional Programminghttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-326
Memoizing the Recursive Fibonacci Algorithmhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-327
Python’s functools Modulehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-328
What Happens When You Memoize Impure Functions?https://inventwithpython.com/recursion/frontmatter.html#calibre_link-329
Summaryhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-330
Further Readinghttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-331
Practice Questionshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-332
Chapter 8: Tail Call Optimizationhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-212
How Tail Recursion and Tail Call Optimization Workhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-333
Accumulators in Tail Recursionhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-334
Limitations of Tail Recursionhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-335
Tail Recursion Case Studieshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-336
Tail Recursive Reverse Stringhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-337
Tail Recursive Find Substringhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-338
Tail Recursive Exponentshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-339
Tail Recursive Odd-Evenhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-340
Summaryhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-341
Further Readinghttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-342
Practice Questionshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-343
Chapter 9: Drawing Fractalshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-216
Turtle Graphicshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-344
Basic Turtle Functionshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-345
The Sierpiński Trianglehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-346
The Sierpiński Carpethttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-347
Fractal Treeshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-348
How Long Is the Coast of Great Britain? The Koch Curve and Snowflakehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-349
The Hilbert Curvehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-350
Summaryhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-351
Further Readinghttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-352
Practice Questionshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-353
Practice Projectshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-354
Part II: Projectshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-355
Chapter 10: File Finder https://inventwithpython.com/recursion/frontmatter.html#calibre_link-356
The Complete File-Search Programhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-357
The Match Functionshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-358
Finding the Files with an Even Number of Byteshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-359
Finding the Filenames That Contain Every Vowelhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-360
The Recursive walk() Functionhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-361
Calling the walk() Functionhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-362
Useful Python Standard Library Functions for Working with Fileshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-363
Finding Information About the File’s Namehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-364
Finding Information About the File’s Timestampshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-365
Modifying Your Fileshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-366
Summaryhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-367
Further Readinghttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-368
Chapter 11: Maze Generator https://inventwithpython.com/recursion/frontmatter.html#calibre_link-369
The Complete Maze-Generator Programhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-370
Setting Up the Maze Generator’s Constantshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-371
Creating the Maze Data Structurehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-372
Printing the Maze Data Structurehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-373
Using the Recursive Backtracker Algorithmhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-374
Starting the Chain of Recursive Callshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-375
Summaryhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-376
Further Readinghttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-377
Chapter 12: Sliding-Tile Solverhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-378
Solving 15-Puzzles Recursivelyhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-379
The Complete Sliding-Tile Solver Programhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-380
Setting Up the Program’s Constantshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-381
Representing the Sliding-Tile Puzzle as Datahttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-382
Displaying the Boardhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-383
Creating a New Board Data Structurehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-384
Finding the Coordinates of the Blank Spacehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-385
Making a Movehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-386
Undoing a Movehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-387
Setting Up a New Puzzlehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-388
Recursively Solving the Sliding-Tile Puzzlehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-389
The solve() Functionhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-390
The attemptMove() Functionhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-391
Starting the Solverhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-392
Summaryhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-393
Further Readinghttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-394
Chapter 13: Fractal Art Makerhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-395
The Built-in Fractalshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-396
The Fractal Art Maker Algorithmhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-397
The Complete Fractal Art Maker Programhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-398
Setting Up Constants and the Turtle Configurationhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-399
Working with the Shape-Drawing Functionshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-400
The drawFilledSquare() Functionhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-401
The drawTriangleOutline() Functionhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-402
Using the Fractal Drawing Functionhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-403
Setting Up the Functionhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-404
Using the Specifications Dictionaryhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-405
Applying the Specifications https://inventwithpython.com/recursion/frontmatter.html#calibre_link-406
Creating the Example Fractalshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-407
Four Cornershttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-408
Spiral Squareshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-409
Double Spiral Squareshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-410
Triangle Spiralhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-411
Conway’s Game of Life Gliderhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-412
Sierpiński Trianglehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-413
Wavehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-414
Hornhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-415
Snowflakehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-416
Producing a Single Square or Trianglehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-417
Creating Your Own Fractalshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-418
Summaryhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-419
Further Readinghttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-420
Chapter 14: Droste Makerhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-7
Installing the Pillow Python Libraryhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-421
Painting Your Imagehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-422
The Complete Droste Maker Programhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-423
Setting Uphttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-424
Finding the Magenta Areahttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-425
Resizing the Base Imagehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-426
Recursively Placing the Image Within the Imagehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-427
Summaryhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-428
Further Readinghttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-429
Indexhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-21
Table 2-1: Factorials of the First Few Integershttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-430
Table 6-1: All Possible Permutations and Combinations, with and without Repetition, of the Set {A, B, C}https://inventwithpython.com/recursion/frontmatter.html#calibre_link-200
Table 6-2: Calculating the Number of Possible Permutations and Combinations, with and without Repetition, of a Set of n Elementshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-201
Table 6-3: How Power Sets Grow as New Elements (in Bold) Are Added to the Sethttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-206
Table 9-1: Turtle Functions in Python’s turtle Module and JavaScript’s jtg Libraryhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-219
Table 9-2: Python-Only Turtle Functionshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-220
Table 13-1: Keys in the Specification Dictionarieshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-431
Figure 1-1: The Google search results for recursion link to the Google search results for recursion.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-432
Figure 1-2: I’m So Meta, Even This Acronym (I.S. M.E.T.A.) (xkcd.com/917 by Randall Munroe)https://inventwithpython.com/recursion/frontmatter.html#calibre_link-433
Figure 1-3: The recursive centaur. Image by Joseph Parker.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-434
Figure 1-4: Sierpiński triangles are fractals (recursive shapes) that include Sierpiński triangles.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-435
Figure 1-5: Your meandering conversation stackhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-436
Figure 1-6: The stack starts empty. Cards are then pushed onto and popped off the stack.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-437
Figure 1-7: The state of the call stack as the localVariables program runshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-438
Figure 1-8: A stack overflow happens when the call stack becomes too high, with too many frame objects taking up the computer’s memory.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-439
Figure 1-9: The call stack keeping track of the values in the number local variable for each function callhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-440
Figure 2-1: The state of the call stack as the recursive calls to factorial() are called and then returnhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-441
Figure 2-2: Each number of the Fibonacci sequence is the sum of the previous two numbers.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-442
Figure 2-3: A tree diagram of the recursive function calls made starting with fibonacci(6). The redundant function calls are in gray.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-443
Figure 2-4: The stack in opStack during the exponentWithPowerRule(6, 5) function callhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-444
Figure 2-5: A maze (left) along with its interior paths (center) morphed to match a biological tree’s shape (right)https://inventwithpython.com/recursion/frontmatter.html#calibre_link-445
Figure 2-6: A filesystem is similar to a tree structure.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-446
Figure 3-1: The state of the call stack when sum([5, 2, 4, 8]) runshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-447
Figure 3-2: A [5, 2, 4, 8] array (right) is like a tree data structure (left) with only one branch at each node.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-448
Figure 3-3: The state of the call stack as the rev() function reverses the CAT stringhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-449
Figure 3-4: A wooden Tower of Hanoi puzzle sethttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-450
Figure 3-5: The series of operations for solving a four-disk Tower of Hanoihttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-451
Figure 3-6: The original shape in a graphics editor (top left) and the same shape with three different areas flood-filled with a light gray colorhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-452
Figure 4-1: A tree (left) and three examples of non-treeshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-1
Figure 4-2: A tree with root A and leaves D, G, H, and F, along with its traversal ordershttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-2
Figure 4-3: A linked list data structure storing HELLO. Linked lists can be considered a kind of tree data structure.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-3
Figure 4-4: The tree that stores names in our depthFirstSearch.py and depthFirstSearch.html programshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-4
Figure 4-5: The maze solved by our maze program in this chapter. Some intersections have lowercase letters that correspond to nodes in Figure 4-6.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-5
Figure 4-6: In this DAG representation of the maze, nodes represent intersections, and edges represent the north, south, east, or west path from the intersection. Some nodes have lowercase letters to correspond to intersections in Figure 4-5.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-6
Figure 5-1: A binary search repeatedly determines which half of a range contains your target item in a sorted array of items.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-15
Figure 5-2: Quicksort works by repeatedly partitioning items into two sets.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-16
Figure 5-3: The divide and merge phases of merge sorthttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-17
Figure 5-4: The merge step compares the two values at the start of the smaller sorted lists and moves them to the larger sorted list. Merging four cards requires only four steps.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-18
Figure 5-5: A lookup table, such as this table of products of all single-digit numbers, saves our program from repeat calculations as the computer stores the precomputed values in memory for later retrieval.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-19
Figure 5-6: The integers to multiply, x and y, are divided into halves a, b, c, and d.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-20
Figure 6-1: The set {A, B, C} within the dashed lines and some of its subsets {A, B, C}, {A, C}, and { } within the solid lines. The circles represent sets, and the letters represent elements.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-199
Figure 6-2: All six possible permutations of three wedding guests at a tablehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-202
Figure 6-3: A four-digit combination bicycle lock has 104, or 10,000, possible permutations with repetition (photo courtesy of Shaun Fisher, CC BY 2.0 license).https://inventwithpython.com/recursion/frontmatter.html#calibre_link-203
Figure 6-4: Tree showing every possible k-combination (from 0 to 4) from the set {A, B, C, D}https://inventwithpython.com/recursion/frontmatter.html#calibre_link-204
Figure 6-5: Tree showing every possible 2-combination from the set {A, B, C}https://inventwithpython.com/recursion/frontmatter.html#calibre_link-205
Figure 7-1: A tree diagram of the recursive function calls made starting with fibonacci(6). The redundant function calls are in gray.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-209
Figure 7-2: The number of function calls sharply increases for the original fibonacci() function (top) but grows only slowly for the memoized fibonacci() function (bottom).https://inventwithpython.com/recursion/frontmatter.html#calibre_link-210
Figure 8-1: The process of transformations that factorial(5) makes to the integer 120https://inventwithpython.com/recursion/frontmatter.html#calibre_link-213
Figure 8-2: The process of transformations that rev('abcdef') makes to the string fedcbahttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-214
Figure 9-1: The spiral drawn by the program using Python’s turtle modulehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-217
Figure 9-2: The headings in Python’s turtle module (left) and the JavaScript jtg library (right)https://inventwithpython.com/recursion/frontmatter.html#calibre_link-218
Figure 9-3: An equilateral triangle (left) with an upside-down triangle added to form a Sierpiński triangle, with additional triangles recursively addedhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-221
Figure 9-4: The three inner triangles, with midpoints shown with large dots https://inventwithpython.com/recursion/frontmatter.html#calibre_link-222
Figure 9-5: A standard Sierpiński trianglehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-223
Figure 9-6: A skewed Sierpiński trianglehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-224
Figure 9-7: The Sierpiński carpethttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-225
Figure 9-8: Calling turtle.begin_fill(), drawing a path, and calling turtle.end_fill() creates a filled-in shape.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-226
Figure 9-9: The Sierpiński carpet, with only the outlines of the rectangles drawnhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-227
Figure 9-10: A 3D Menger sponge fractalhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-228
Figure 9-11: A perfectly self-similar fractal tree generated with the left and right branches using consistent angles and lengthshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-453
Figure 9-12: A more realistic tree created using random changes to branch angle and lengthshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-454
Figure 9-13: The island of Great Britain, with a rough measure (left) and more precise measure (right). Measuring the coast more precisely adds 800 miles to its length.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-229
Figure 9-14: After splitting the line segment into three equal parts (left), add a bump to the middle part (right). We now have four segments of length b / 3, to which bumps can be added again (bottom).https://inventwithpython.com/recursion/frontmatter.html#calibre_link-230
Figure 9-15: Creating three Koch curves on the three sides of an equilateral triangle to form a Koch snowflakehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-231
Figure 9-16: A Koch snowflake. Some of the interior lines remain because of small rounding errors.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-232
Figure 9-17: The first three recursions of the Hilbert space-filling curvehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-233
Figure 9-18: Five levels of the Hilbert curve, with line length 10https://inventwithpython.com/recursion/frontmatter.html#calibre_link-234
Figure 9-19: Six levels of the Hilbert curve, filled in, with line length 5https://inventwithpython.com/recursion/frontmatter.html#calibre_link-235
Figure 9-20: A box fractal, drawn to two levelshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-236
Figure 9-21: The first three iterations of the Peano curve, from left to right. The bottom row includes the 3 × 3 sections that each part of the curve is split across.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-237
Figure 10-1: An example filesystem and the recursive walk() function calls over ithttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-455
Figure 10-2: Going from the filename to the individual attributes of a timestamphttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-456
Figure 11-1: The maze as it gets “carved out” by the recursive backtracking algorithmhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-457
Figure 11-2: An example maze that can be represented by a data structurehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-458
Figure 12-1: Solving a numeric sliding-tile puzzle from its scrambled state (left) to its solved, ordered state (right)https://inventwithpython.com/recursion/frontmatter.html#calibre_link-459
Figure 12-2: The task of solving a 15-puzzle can be represented as a graph with tile states as nodes and slides as edges.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-460
Figure 12-3: The 15-puzzle has undirected edges (drawn without an arrowhead) between its nodes because slides can be undone by performing the opposite slide.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-461
Figure 12-4: An example of a loop in the 15-puzzle’s graphhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-462
Figure 12-5: The x, y coordinates for each space on the board (left) and the corresponding data structure index (right)https://inventwithpython.com/recursion/frontmatter.html#calibre_link-463
Figure 12-6: If the blank space is in the bottom-right corner, down and right are the only valid slide directions.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-464
Figure 13-1: The nine example fractals that come with the Fractal Art Maker programhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-465
Figure 13-2: The results of calling drawFilledSquare() (left) and drawTriangleOutline() (right) on their ownhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-466
Figure 13-3: The triangle produced by the first call to drawFractal() (left) and the first set of three recursive calls (right)https://inventwithpython.com/recursion/frontmatter.html#calibre_link-467
Figure 13-4: The first level of recursive calls to drawFractal() (left) and the nine new triangles of the second level of recursive calls (right)https://inventwithpython.com/recursion/frontmatter.html#calibre_link-468
Figure 13-5: The final Wave fractal after each triangle recursively generates three more triangleshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-469
Figure 13-6: The measurements of an equilateral triangle with sides the length of sizehttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-470
Figure 13-7: Drawing an equilateral triangle involves three forward movements and three 120-degree turns.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-471
Figure 13-8: Each step of the Four Corners example from left to right, top to bottom. Each square recursively produces four more squares at its corners, with colors alternating between white and gray.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-472
Figure 13-9: The Four Corners fractal with the first dictionary removed from the specs listhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-473
Figure 13-10: In each of these four images, the turtle always moves 100 units “right” and “up” along the relative x-axis and y-axis of its initial heading.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-474
Figure 13-11: The nine fractals that come with Fractal Art Maker, with the shape-drawing functions swappedhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-475
Figure 14-1: The recursive illustration on a tin of Droste’s Cacaohttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-8
Figure 14-2: Recursive applications of the image to the magenta pixels. If you are viewing the black-and-white image printed in this book, the magenta area is the rectangle in front of the museum visitor.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-9
Figure 14-3: The base image with a magenta area outlined in white (left) and the recursive image it produces (right)https://inventwithpython.com/recursion/frontmatter.html#calibre_link-10
Figure 14-4: The base image with the magenta area in the monitor (top), the resized image over the base image (middle), and the final recursive image that replaces only the magenta pixels (bottom)https://inventwithpython.com/recursion/frontmatter.html#calibre_link-11
Figure 14-5: Resizing the image to the dimensions of the magenta area can result in a different aspect ratio, causing it to look stretched or squished.https://inventwithpython.com/recursion/frontmatter.html#calibre_link-12
Front Matterhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-239
Dedicationhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-241
Forewordhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-197
Introductionhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-211
Part I: UNDERSTANDING RECURSIONhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-215
Chapter 1: What Is Recursion?https://inventwithpython.com/recursion/frontmatter.html#calibre_link-248
Start Readinghttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-248
Chapter 2: Recursion vs. Iterationhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-259
Chapter 3: Classic Recursion Algorithmshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-279
Chapter 4: Backtracking and Tree Traversal Algorithmshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-0
Chapter 5: Divide-and-Conquer Algorithmshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-14
Chapter 6: Permutations and Combinationshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-198
Chapter 7: Memoization and Dynamic Programminghttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-208
Chapter 8: Tail Call Optimizationhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-212
Chapter 9: Drawing Fractalshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-216
Part II: Projectshttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-355
Chapter 10: File Finder https://inventwithpython.com/recursion/frontmatter.html#calibre_link-356
Chapter 11: Maze Generator https://inventwithpython.com/recursion/frontmatter.html#calibre_link-369
Chapter 12: Sliding-Tile Solverhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-378
Chapter 13: Fractal Art Makerhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-395
Chapter 14: Droste Makerhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-7
Indexhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-21
iiihttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-476
ivhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-477
vhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-478
vihttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-479
xvhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-480
xvihttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-481
xviihttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-482
xixhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-483
xxhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-112
xxihttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-484
xxiihttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-485
xxiiihttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-486
xxivhttps://inventwithpython.com/recursion/frontmatter.html#calibre_link-487
1https://inventwithpython.com/recursion/frontmatter.html#calibre_link-488
3https://inventwithpython.com/recursion/frontmatter.html#calibre_link-489
4https://inventwithpython.com/recursion/frontmatter.html#calibre_link-133
5https://inventwithpython.com/recursion/frontmatter.html#calibre_link-113
6https://inventwithpython.com/recursion/frontmatter.html#calibre_link-36
7https://inventwithpython.com/recursion/frontmatter.html#calibre_link-118
8https://inventwithpython.com/recursion/frontmatter.html#calibre_link-35
9https://inventwithpython.com/recursion/frontmatter.html#calibre_link-56
10https://inventwithpython.com/recursion/frontmatter.html#calibre_link-149
11https://inventwithpython.com/recursion/frontmatter.html#calibre_link-490
12https://inventwithpython.com/recursion/frontmatter.html#calibre_link-54
13https://inventwithpython.com/recursion/frontmatter.html#calibre_link-152
14https://inventwithpython.com/recursion/frontmatter.html#calibre_link-45
15https://inventwithpython.com/recursion/frontmatter.html#calibre_link-491
16https://inventwithpython.com/recursion/frontmatter.html#calibre_link-69
17https://inventwithpython.com/recursion/frontmatter.html#calibre_link-150
18https://inventwithpython.com/recursion/frontmatter.html#calibre_link-136
19https://inventwithpython.com/recursion/frontmatter.html#calibre_link-492
21https://inventwithpython.com/recursion/frontmatter.html#calibre_link-137
22https://inventwithpython.com/recursion/frontmatter.html#calibre_link-92
23https://inventwithpython.com/recursion/frontmatter.html#calibre_link-93
24https://inventwithpython.com/recursion/frontmatter.html#calibre_link-94
25https://inventwithpython.com/recursion/frontmatter.html#calibre_link-100
26https://inventwithpython.com/recursion/frontmatter.html#calibre_link-97
27https://inventwithpython.com/recursion/frontmatter.html#calibre_link-99
28https://inventwithpython.com/recursion/frontmatter.html#calibre_link-102
29https://inventwithpython.com/recursion/frontmatter.html#calibre_link-101
30https://inventwithpython.com/recursion/frontmatter.html#calibre_link-95
31https://inventwithpython.com/recursion/frontmatter.html#calibre_link-68
32https://inventwithpython.com/recursion/frontmatter.html#calibre_link-128
33https://inventwithpython.com/recursion/frontmatter.html#calibre_link-108
34https://inventwithpython.com/recursion/frontmatter.html#calibre_link-87
35https://inventwithpython.com/recursion/frontmatter.html#calibre_link-91
36https://inventwithpython.com/recursion/frontmatter.html#calibre_link-88
37https://inventwithpython.com/recursion/frontmatter.html#calibre_link-90
38https://inventwithpython.com/recursion/frontmatter.html#calibre_link-194
39https://inventwithpython.com/recursion/frontmatter.html#calibre_link-191
40https://inventwithpython.com/recursion/frontmatter.html#calibre_link-38
41https://inventwithpython.com/recursion/frontmatter.html#calibre_link-46
42https://inventwithpython.com/recursion/frontmatter.html#calibre_link-66
43https://inventwithpython.com/recursion/frontmatter.html#calibre_link-493
45https://inventwithpython.com/recursion/frontmatter.html#calibre_link-494
46https://inventwithpython.com/recursion/frontmatter.html#calibre_link-122
47https://inventwithpython.com/recursion/frontmatter.html#calibre_link-176
48https://inventwithpython.com/recursion/frontmatter.html#calibre_link-39
49https://inventwithpython.com/recursion/frontmatter.html#calibre_link-123
50https://inventwithpython.com/recursion/frontmatter.html#calibre_link-147
51https://inventwithpython.com/recursion/frontmatter.html#calibre_link-181
52https://inventwithpython.com/recursion/frontmatter.html#calibre_link-124
53https://inventwithpython.com/recursion/frontmatter.html#calibre_link-169
54https://inventwithpython.com/recursion/frontmatter.html#calibre_link-25
55https://inventwithpython.com/recursion/frontmatter.html#calibre_link-196
56https://inventwithpython.com/recursion/frontmatter.html#calibre_link-184
57https://inventwithpython.com/recursion/frontmatter.html#calibre_link-183
58https://inventwithpython.com/recursion/frontmatter.html#calibre_link-495
59https://inventwithpython.com/recursion/frontmatter.html#calibre_link-496
60https://inventwithpython.com/recursion/frontmatter.html#calibre_link-109
61https://inventwithpython.com/recursion/frontmatter.html#calibre_link-111
62https://inventwithpython.com/recursion/frontmatter.html#calibre_link-110
63https://inventwithpython.com/recursion/frontmatter.html#calibre_link-497
64https://inventwithpython.com/recursion/frontmatter.html#calibre_link-498
65https://inventwithpython.com/recursion/frontmatter.html#calibre_link-29
66https://inventwithpython.com/recursion/frontmatter.html#calibre_link-30
67https://inventwithpython.com/recursion/frontmatter.html#calibre_link-31
68https://inventwithpython.com/recursion/frontmatter.html#calibre_link-121
69https://inventwithpython.com/recursion/frontmatter.html#calibre_link-499
71https://inventwithpython.com/recursion/frontmatter.html#calibre_link-500
72https://inventwithpython.com/recursion/frontmatter.html#calibre_link-34
73https://inventwithpython.com/recursion/frontmatter.html#calibre_link-73
74https://inventwithpython.com/recursion/frontmatter.html#calibre_link-32
75https://inventwithpython.com/recursion/frontmatter.html#calibre_link-179
76https://inventwithpython.com/recursion/frontmatter.html#calibre_link-61
77https://inventwithpython.com/recursion/frontmatter.html#calibre_link-52
78https://inventwithpython.com/recursion/frontmatter.html#calibre_link-75
79https://inventwithpython.com/recursion/frontmatter.html#calibre_link-77
80https://inventwithpython.com/recursion/frontmatter.html#calibre_link-76
81https://inventwithpython.com/recursion/frontmatter.html#calibre_link-74
82https://inventwithpython.com/recursion/frontmatter.html#calibre_link-119
83https://inventwithpython.com/recursion/frontmatter.html#calibre_link-155
84https://inventwithpython.com/recursion/frontmatter.html#calibre_link-501
85https://inventwithpython.com/recursion/frontmatter.html#calibre_link-157
86https://inventwithpython.com/recursion/frontmatter.html#calibre_link-502
87https://inventwithpython.com/recursion/frontmatter.html#calibre_link-156
88https://inventwithpython.com/recursion/frontmatter.html#calibre_link-503
89https://inventwithpython.com/recursion/frontmatter.html#calibre_link-504
90https://inventwithpython.com/recursion/frontmatter.html#calibre_link-134
91https://inventwithpython.com/recursion/frontmatter.html#calibre_link-67
92https://inventwithpython.com/recursion/frontmatter.html#calibre_link-505
93https://inventwithpython.com/recursion/frontmatter.html#calibre_link-60
94https://inventwithpython.com/recursion/frontmatter.html#calibre_link-50
95https://inventwithpython.com/recursion/frontmatter.html#calibre_link-51
96https://inventwithpython.com/recursion/frontmatter.html#calibre_link-506
97https://inventwithpython.com/recursion/frontmatter.html#calibre_link-49
98https://inventwithpython.com/recursion/frontmatter.html#calibre_link-186
99https://inventwithpython.com/recursion/frontmatter.html#calibre_link-185
100https://inventwithpython.com/recursion/frontmatter.html#calibre_link-507
101https://inventwithpython.com/recursion/frontmatter.html#calibre_link-508
102https://inventwithpython.com/recursion/frontmatter.html#calibre_link-509
103https://inventwithpython.com/recursion/frontmatter.html#calibre_link-510
104https://inventwithpython.com/recursion/frontmatter.html#calibre_link-159
105https://inventwithpython.com/recursion/frontmatter.html#calibre_link-511
106https://inventwithpython.com/recursion/frontmatter.html#calibre_link-512
107https://inventwithpython.com/recursion/frontmatter.html#calibre_link-161
108https://inventwithpython.com/recursion/frontmatter.html#calibre_link-160
109https://inventwithpython.com/recursion/frontmatter.html#calibre_link-513
110https://inventwithpython.com/recursion/frontmatter.html#calibre_link-514
111https://inventwithpython.com/recursion/frontmatter.html#calibre_link-170
112https://inventwithpython.com/recursion/frontmatter.html#calibre_link-515
113https://inventwithpython.com/recursion/frontmatter.html#calibre_link-138
114https://inventwithpython.com/recursion/frontmatter.html#calibre_link-140
115https://inventwithpython.com/recursion/frontmatter.html#calibre_link-516
116https://inventwithpython.com/recursion/frontmatter.html#calibre_link-139
117https://inventwithpython.com/recursion/frontmatter.html#calibre_link-517
118https://inventwithpython.com/recursion/frontmatter.html#calibre_link-518
119https://inventwithpython.com/recursion/frontmatter.html#calibre_link-33
120https://inventwithpython.com/recursion/frontmatter.html#calibre_link-48
121https://inventwithpython.com/recursion/frontmatter.html#calibre_link-519
122https://inventwithpython.com/recursion/frontmatter.html#calibre_link-520
123https://inventwithpython.com/recursion/frontmatter.html#calibre_link-171
124https://inventwithpython.com/recursion/frontmatter.html#calibre_link-85
125https://inventwithpython.com/recursion/frontmatter.html#calibre_link-63
126https://inventwithpython.com/recursion/frontmatter.html#calibre_link-125
127https://inventwithpython.com/recursion/frontmatter.html#calibre_link-173
128https://inventwithpython.com/recursion/frontmatter.html#calibre_link-172
129https://inventwithpython.com/recursion/frontmatter.html#calibre_link-521
130https://inventwithpython.com/recursion/frontmatter.html#calibre_link-164
131https://inventwithpython.com/recursion/frontmatter.html#calibre_link-163
132https://inventwithpython.com/recursion/frontmatter.html#calibre_link-175
133https://inventwithpython.com/recursion/frontmatter.html#calibre_link-174
134https://inventwithpython.com/recursion/frontmatter.html#calibre_link-141
135https://inventwithpython.com/recursion/frontmatter.html#calibre_link-522
136https://inventwithpython.com/recursion/frontmatter.html#calibre_link-126
137https://inventwithpython.com/recursion/frontmatter.html#calibre_link-64
138https://inventwithpython.com/recursion/frontmatter.html#calibre_link-523
139https://inventwithpython.com/recursion/frontmatter.html#calibre_link-43
140https://inventwithpython.com/recursion/frontmatter.html#calibre_link-82
141https://inventwithpython.com/recursion/frontmatter.html#calibre_link-44
142https://inventwithpython.com/recursion/frontmatter.html#calibre_link-524
143https://inventwithpython.com/recursion/frontmatter.html#calibre_link-177
144https://inventwithpython.com/recursion/frontmatter.html#calibre_link-525
145https://inventwithpython.com/recursion/frontmatter.html#calibre_link-178
146https://inventwithpython.com/recursion/frontmatter.html#calibre_link-526
147https://inventwithpython.com/recursion/frontmatter.html#calibre_link-148
148https://inventwithpython.com/recursion/frontmatter.html#calibre_link-142
149https://inventwithpython.com/recursion/frontmatter.html#calibre_link-527
151https://inventwithpython.com/recursion/frontmatter.html#calibre_link-528
152https://inventwithpython.com/recursion/frontmatter.html#calibre_link-83
153https://inventwithpython.com/recursion/frontmatter.html#calibre_link-53
154https://inventwithpython.com/recursion/frontmatter.html#calibre_link-98
155https://inventwithpython.com/recursion/frontmatter.html#calibre_link-104
156https://inventwithpython.com/recursion/frontmatter.html#calibre_link-103
157https://inventwithpython.com/recursion/frontmatter.html#calibre_link-529
158https://inventwithpython.com/recursion/frontmatter.html#calibre_link-105
159https://inventwithpython.com/recursion/frontmatter.html#calibre_link-79
160https://inventwithpython.com/recursion/frontmatter.html#calibre_link-530
161https://inventwithpython.com/recursion/frontmatter.html#calibre_link-70
163https://inventwithpython.com/recursion/frontmatter.html#calibre_link-65
164https://inventwithpython.com/recursion/frontmatter.html#calibre_link-96
165https://inventwithpython.com/recursion/frontmatter.html#calibre_link-27
166https://inventwithpython.com/recursion/frontmatter.html#calibre_link-71
167https://inventwithpython.com/recursion/frontmatter.html#calibre_link-57
168https://inventwithpython.com/recursion/frontmatter.html#calibre_link-28
169https://inventwithpython.com/recursion/frontmatter.html#calibre_link-89
170https://inventwithpython.com/recursion/frontmatter.html#calibre_link-26
171https://inventwithpython.com/recursion/frontmatter.html#calibre_link-531
172https://inventwithpython.com/recursion/frontmatter.html#calibre_link-189
173https://inventwithpython.com/recursion/frontmatter.html#calibre_link-127
175https://inventwithpython.com/recursion/frontmatter.html#calibre_link-114
176https://inventwithpython.com/recursion/frontmatter.html#calibre_link-151
177https://inventwithpython.com/recursion/frontmatter.html#calibre_link-58
178https://inventwithpython.com/recursion/frontmatter.html#calibre_link-42
179https://inventwithpython.com/recursion/frontmatter.html#calibre_link-86
180https://inventwithpython.com/recursion/frontmatter.html#calibre_link-47
181https://inventwithpython.com/recursion/frontmatter.html#calibre_link-532
182https://inventwithpython.com/recursion/frontmatter.html#calibre_link-533
183https://inventwithpython.com/recursion/frontmatter.html#calibre_link-193
184https://inventwithpython.com/recursion/frontmatter.html#calibre_link-182
185https://inventwithpython.com/recursion/frontmatter.html#calibre_link-534
186https://inventwithpython.com/recursion/frontmatter.html#calibre_link-158
187https://inventwithpython.com/recursion/frontmatter.html#calibre_link-117
188https://inventwithpython.com/recursion/frontmatter.html#calibre_link-116
189https://inventwithpython.com/recursion/frontmatter.html#calibre_link-190
190https://inventwithpython.com/recursion/frontmatter.html#calibre_link-62
191https://inventwithpython.com/recursion/frontmatter.html#calibre_link-143
192https://inventwithpython.com/recursion/frontmatter.html#calibre_link-145
193https://inventwithpython.com/recursion/frontmatter.html#calibre_link-144
194https://inventwithpython.com/recursion/frontmatter.html#calibre_link-129
195https://inventwithpython.com/recursion/frontmatter.html#calibre_link-535
196https://inventwithpython.com/recursion/frontmatter.html#calibre_link-130
197https://inventwithpython.com/recursion/frontmatter.html#calibre_link-24
198https://inventwithpython.com/recursion/frontmatter.html#calibre_link-536
199https://inventwithpython.com/recursion/frontmatter.html#calibre_link-537
201https://inventwithpython.com/recursion/frontmatter.html#calibre_link-538
203https://inventwithpython.com/recursion/frontmatter.html#calibre_link-107
204https://inventwithpython.com/recursion/frontmatter.html#calibre_link-106
205https://inventwithpython.com/recursion/frontmatter.html#calibre_link-539
206https://inventwithpython.com/recursion/frontmatter.html#calibre_link-165
207https://inventwithpython.com/recursion/frontmatter.html#calibre_link-540
208https://inventwithpython.com/recursion/frontmatter.html#calibre_link-167
209https://inventwithpython.com/recursion/frontmatter.html#calibre_link-72
210https://inventwithpython.com/recursion/frontmatter.html#calibre_link-166
211https://inventwithpython.com/recursion/frontmatter.html#calibre_link-195
212https://inventwithpython.com/recursion/frontmatter.html#calibre_link-168
213https://inventwithpython.com/recursion/frontmatter.html#calibre_link-192
214https://inventwithpython.com/recursion/frontmatter.html#calibre_link-541
215https://inventwithpython.com/recursion/frontmatter.html#calibre_link-154
216https://inventwithpython.com/recursion/frontmatter.html#calibre_link-146
217https://inventwithpython.com/recursion/frontmatter.html#calibre_link-542
218https://inventwithpython.com/recursion/frontmatter.html#calibre_link-153
219https://inventwithpython.com/recursion/frontmatter.html#calibre_link-543
220https://inventwithpython.com/recursion/frontmatter.html#calibre_link-40
221https://inventwithpython.com/recursion/frontmatter.html#calibre_link-188
222https://inventwithpython.com/recursion/frontmatter.html#calibre_link-59
223https://inventwithpython.com/recursion/frontmatter.html#calibre_link-544
224https://inventwithpython.com/recursion/frontmatter.html#calibre_link-545
225https://inventwithpython.com/recursion/frontmatter.html#calibre_link-135
226https://inventwithpython.com/recursion/frontmatter.html#calibre_link-546
227https://inventwithpython.com/recursion/frontmatter.html#calibre_link-547
228https://inventwithpython.com/recursion/frontmatter.html#calibre_link-548
229https://inventwithpython.com/recursion/frontmatter.html#calibre_link-549
231https://inventwithpython.com/recursion/frontmatter.html#calibre_link-22
232https://inventwithpython.com/recursion/frontmatter.html#calibre_link-78
233https://inventwithpython.com/recursion/frontmatter.html#calibre_link-84
234https://inventwithpython.com/recursion/frontmatter.html#calibre_link-550
235https://inventwithpython.com/recursion/frontmatter.html#calibre_link-551
236https://inventwithpython.com/recursion/frontmatter.html#calibre_link-552
237https://inventwithpython.com/recursion/frontmatter.html#calibre_link-553
238https://inventwithpython.com/recursion/frontmatter.html#calibre_link-554
239https://inventwithpython.com/recursion/frontmatter.html#calibre_link-555
240https://inventwithpython.com/recursion/frontmatter.html#calibre_link-556
241https://inventwithpython.com/recursion/frontmatter.html#calibre_link-557
242https://inventwithpython.com/recursion/frontmatter.html#calibre_link-558
243https://inventwithpython.com/recursion/frontmatter.html#calibre_link-187
244https://inventwithpython.com/recursion/frontmatter.html#calibre_link-559
245https://inventwithpython.com/recursion/frontmatter.html#calibre_link-560
246https://inventwithpython.com/recursion/frontmatter.html#calibre_link-561
247https://inventwithpython.com/recursion/frontmatter.html#calibre_link-562
248https://inventwithpython.com/recursion/frontmatter.html#calibre_link-563
249https://inventwithpython.com/recursion/frontmatter.html#calibre_link-564
250https://inventwithpython.com/recursion/frontmatter.html#calibre_link-565
251https://inventwithpython.com/recursion/frontmatter.html#calibre_link-566
252https://inventwithpython.com/recursion/frontmatter.html#calibre_link-567
253https://inventwithpython.com/recursion/frontmatter.html#calibre_link-568
254https://inventwithpython.com/recursion/frontmatter.html#calibre_link-569
255https://inventwithpython.com/recursion/frontmatter.html#calibre_link-570
256https://inventwithpython.com/recursion/frontmatter.html#calibre_link-571
257https://inventwithpython.com/recursion/frontmatter.html#calibre_link-572
259https://inventwithpython.com/recursion/frontmatter.html#calibre_link-573
260https://inventwithpython.com/recursion/frontmatter.html#calibre_link-115
261https://inventwithpython.com/recursion/frontmatter.html#calibre_link-574
262https://inventwithpython.com/recursion/frontmatter.html#calibre_link-575
263https://inventwithpython.com/recursion/frontmatter.html#calibre_link-576
264https://inventwithpython.com/recursion/frontmatter.html#calibre_link-577
265https://inventwithpython.com/recursion/frontmatter.html#calibre_link-578
266https://inventwithpython.com/recursion/frontmatter.html#calibre_link-579
267https://inventwithpython.com/recursion/frontmatter.html#calibre_link-580
268https://inventwithpython.com/recursion/frontmatter.html#calibre_link-581
269https://inventwithpython.com/recursion/frontmatter.html#calibre_link-582
270https://inventwithpython.com/recursion/frontmatter.html#calibre_link-583
271https://inventwithpython.com/recursion/frontmatter.html#calibre_link-584
272https://inventwithpython.com/recursion/frontmatter.html#calibre_link-585
273https://inventwithpython.com/recursion/frontmatter.html#calibre_link-586
274https://inventwithpython.com/recursion/frontmatter.html#calibre_link-587
275https://inventwithpython.com/recursion/frontmatter.html#calibre_link-588
276https://inventwithpython.com/recursion/frontmatter.html#calibre_link-589
277https://inventwithpython.com/recursion/frontmatter.html#calibre_link-590
278https://inventwithpython.com/recursion/frontmatter.html#calibre_link-591
279https://inventwithpython.com/recursion/frontmatter.html#calibre_link-592
280https://inventwithpython.com/recursion/frontmatter.html#calibre_link-593
281https://inventwithpython.com/recursion/frontmatter.html#calibre_link-594
282https://inventwithpython.com/recursion/frontmatter.html#calibre_link-595
283https://inventwithpython.com/recursion/frontmatter.html#calibre_link-80
284https://inventwithpython.com/recursion/frontmatter.html#calibre_link-120
285https://inventwithpython.com/recursion/frontmatter.html#calibre_link-55
286https://inventwithpython.com/recursion/frontmatter.html#calibre_link-180
287https://inventwithpython.com/recursion/frontmatter.html#calibre_link-81
288https://inventwithpython.com/recursion/frontmatter.html#calibre_link-132
289https://inventwithpython.com/recursion/frontmatter.html#calibre_link-23
290https://inventwithpython.com/recursion/frontmatter.html#calibre_link-162
291https://inventwithpython.com/recursion/frontmatter.html#calibre_link-596
292https://inventwithpython.com/recursion/frontmatter.html#calibre_link-37
293https://inventwithpython.com/recursion/frontmatter.html#calibre_link-597
294https://inventwithpython.com/recursion/frontmatter.html#calibre_link-131
295https://inventwithpython.com/recursion/frontmatter.html#calibre_link-41
296https://inventwithpython.com/recursion/frontmatter.html#calibre_link-598
297https://inventwithpython.com/recursion/frontmatter.html#calibre_link-599
298https://inventwithpython.com/recursion/frontmatter.html#calibre_link-600
299https://inventwithpython.com/recursion/frontmatter.html#calibre_link-601
300https://inventwithpython.com/recursion/frontmatter.html#calibre_link-602
301https://inventwithpython.com/recursion/frontmatter.html#calibre_link-603
302https://inventwithpython.com/recursion/frontmatter.html#calibre_link-604
303https://inventwithpython.com/recursion/frontmatter.html#calibre_link-605
http://creativecommons.org/licenses/by-nc-sa/3.0/ushttp://creativecommons.org/licenses/by-nc-sa/3.0/us
[email protected]https://inventwithpython.com/cdn-cgi/l/email-protection
https://www.inventwithpython.comhttps://www.inventwithpython.com
https://www.dabeaz.comhttps://www.dabeaz.com

URLs of crawlers that visited me.