0% found this document useful (0 votes)
4 views

Introduction to Recursive Programming 1st Edition Manuel Rubio-Sanchez - The latest ebook version is now available for instant access

The document is a promotional material for the ebook 'Introduction to Recursive Programming' by Manuel Rubio-Sanchez, available for download at textbookfull.com. It includes links to various programming-related ebooks and outlines the contents of the recursive programming book, which covers concepts, methodologies, and algorithms related to recursion. The document emphasizes the availability of multiple formats for reading on different devices.

Uploaded by

xhyledasdad
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views

Introduction to Recursive Programming 1st Edition Manuel Rubio-Sanchez - The latest ebook version is now available for instant access

The document is a promotional material for the ebook 'Introduction to Recursive Programming' by Manuel Rubio-Sanchez, available for download at textbookfull.com. It includes links to various programming-related ebooks and outlines the contents of the recursive programming book, which covers concepts, methodologies, and algorithms related to recursion. The document emphasizes the availability of multiple formats for reading on different devices.

Uploaded by

xhyledasdad
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 63

Explore the full ebook collection and download it now at textbookfull.

com

Introduction to Recursive Programming 1st Edition


Manuel Rubio-Sanchez

https://textbookfull.com/product/introduction-to-recursive-
programming-1st-edition-manuel-rubio-sanchez/

OR CLICK HERE

DOWLOAD EBOOK

Browse and Get More Ebook Downloads Instantly at https://textbookfull.com


Click here to visit textbookfull.com and download textbook now
Your digital treasures (PDF, ePub, MOBI) await
Download instantly and pick your perfect format...

Read anywhere, anytime, on any device!

Introduction to Recursive Programming 1st Edition Manuel


Rubio-Sanchez

https://textbookfull.com/product/introduction-to-recursive-
programming-1st-edition-manuel-rubio-sanchez-2/

textbookfull.com

Processing an introduction to programming 1st Edition


Nyhoff

https://textbookfull.com/product/processing-an-introduction-to-
programming-1st-edition-nyhoff/

textbookfull.com

Introduction to Logic Programming 1st Edition Michael


Genesereth

https://textbookfull.com/product/introduction-to-logic-
programming-1st-edition-michael-genesereth/

textbookfull.com

Introduction to Programming with C 1st Edition Nhce

https://textbookfull.com/product/introduction-to-programming-
with-c-1st-edition-nhce/

textbookfull.com
Pointers in C Programming A Modern Approach to Memory
Management Recursive Data Structures Strings and Arrays
Thomas Mailund
https://textbookfull.com/product/pointers-in-c-programming-a-modern-
approach-to-memory-management-recursive-data-structures-strings-and-
arrays-thomas-mailund/
textbookfull.com

Introduction to Programming with Fortran Chivers

https://textbookfull.com/product/introduction-to-programming-with-
fortran-chivers/

textbookfull.com

Introduction to Programming with Fortran Ian Chivers

https://textbookfull.com/product/introduction-to-programming-with-
fortran-ian-chivers/

textbookfull.com

Python for kids a playful introduction to programming 1st


Edition Briggs

https://textbookfull.com/product/python-for-kids-a-playful-
introduction-to-programming-1st-edition-briggs/

textbookfull.com

Introduction to Linear Programming with MATLAB 1st Edition


Shashi Kant Mishra

https://textbookfull.com/product/introduction-to-linear-programming-
with-matlab-1st-edition-shashi-kant-mishra/

textbookfull.com
Introduction to
Recursive
Programming
Introduction to
Recursive
Programming

Manuel Rubio-Sánchez
CRC Press
Taylor & Francis Group
6000 Broken Sound Parkway NW, Suite 300
Boca Raton, FL 33487-2742

© 2018 by Taylor & Francis Group, LLC


CRC Press is an imprint of Taylor & Francis Group, an Informa business

No claim to original U.S. Government works

Printed on acid-free paper


Version Date: 20170817

International Standard Book Number-13: 978-1-4987-3528-5 (Paperback)


International Standard Book Number-13: 978-1-138-10521-8 (Hardback)

This book contains information obtained from authentic and highly regarded sources. Reasonable
efforts have been made to publish reliable data and information, but the author and publisher cannot
assume responsibility for the validity of all materials or the consequences of their use. The authors and
publishers have attempted to trace the copyright holders of all material reproduced in this publication
and apologize to copyright holders if permission to publish in this form has not been obtained. If any
copyright material has not been acknowledged please write and let us know so we may rectify in any
future reprint.

Except as permitted under U.S. Copyright Law, no part of this book may be reprinted, reproduced,
transmitted, or utilized in any form by any electronic, mechanical, or other means, now known or
hereafter invented, including photocopying, microfilming, and recording, or in any information
storage or retrieval system, without written permission from the publishers.

For permission to photocopy or use material electronically from this work, please access
www.copyright.com (http://www.copyright.com/) or contact the Copyright Clearance Center, Inc.
(CCC), 222 Rosewood Drive, Danvers, MA 01923, 978-750-8400. CCC is a not-for-profit organization
that provides licenses and registration for a variety of users. For organizations that have been granted
a photocopy license by the CCC, a separate system of payment has been arranged.

Trademark Notice: Product or corporate names may be trademarks or registered trademarks, and
are used only for identification and explanation without intent to infringe.
Visit the Taylor & Francis Web site at
http://www.taylorandfrancis.com
and the CRC Press Web site at
http://www.crcpress.com
To the future generations
Contents

PREFACE xv
LIST OF FIGURES xxi
LIST OF TABLES xxxi
LIST OF LISTINGS xxxiii

Chapter 1  Basic Concepts of Recursive Programming 1

1.1 RECOGNIZING RECURSION 1


1.2 PROBLEM DECOMPOSITION 7
1.3 RECURSIVE CODE 14
1.4 INDUCTION 20
1.4.1 Mathematical proofs by induction 20
1.4.2 Recursive leap of faith 22
1.4.3 Imperative vs. declarative programming 25
1.5 RECURSION VS. ITERATION 25
1.6 TYPES OF RECURSION 27
1.6.1 Linear recursion 27
1.6.2 Tail recursion 27
1.6.3 Multiple recursion 28
1.6.4 Mutual recursion 28
1.6.5 Nested recursion 29
1.7 EXERCISES 29

Chapter 2  Methodology for Recursive Thinking 31

2.1 TEMPLATE FOR DESIGNING RECURSIVE ALGO-


RITHMS 31

vii
viii  Contents

2.2 SIZE OF THE PROBLEM 32


2.3 BASE CASES 34
2.4 PROBLEM DECOMPOSITION 37
2.5 RECURSIVE CASES, INDUCTION, AND DIAGRAMS 41
2.5.1 Thinking recursively through diagrams 41
2.5.2 Concrete instances 45
2.5.3 Alternative notations 47
2.5.4 Procedures 47
2.5.5 Several subproblems 49
2.6 TESTING 52
2.7 EXERCISES 55

Chapter 3  Runtime Analysis of Recursive Algorithms 57

3.1 MATHEMATICAL PRELIMINARIES 57


3.1.1 Powers and logarithms 58
3.1.2 Binomial coefficients 58
3.1.3 Limits and L’Hopital’s rule 59
3.1.4 Sums and products 60
3.1.5 Floors and ceilings 66
3.1.6 Trigonometry 66
3.1.7 Vectors and matrices 67
3.2 COMPUTATIONAL TIME COMPLEXITY 70
3.2.1 Order of growth of functions 71
3.2.2 Asymptotic notation 73
3.3 RECURRENCE RELATIONS 76
3.3.1 Expansion method 80
3.3.2 General method for solving difference equations 89
3.4 EXERCISES 101

Chapter 4  Linear Recursion I: Basic Algorithms 105

4.1 ARITHMETIC OPERATIONS 106


Contents  ix

4.1.1 Power function 106


4.1.2 Slow addition 110
4.1.3 Double sum 113
4.2 BASE CONVERSION 115
4.2.1 Binary representation of a nonnegative integer 115
4.2.2 Decimal to base b conversion 117
4.3 STRINGS 119
4.3.1 Reversing a string 119
4.3.2 Is a string a palindrome? 120
4.4 ADDITIONAL PROBLEMS 121
4.4.1 Selection sort 121
4.4.2 Horner’s method for evaluating polynomials 124
4.4.3 A row of Pascal’s triangle 125
4.4.4 Ladder of resistors 127
4.5 EXERCISES 129

Chapter 5  Linear Recursion II: Tail Recursion 133

5.1 BOOLEAN FUNCTIONS 134


5.1.1 Does a nonnegative integer contain a partic-
ular digit? 134
5.1.2 Equal strings? 136
5.2 SEARCHING ALGORITHMS FOR LISTS 139
5.2.1 Linear search 139
5.2.2 Binary search in a sorted list 142
5.3 BINARY SEARCH TREES 143
5.3.1 Searching for an item 144
5.3.2 Inserting an item 147
5.4 PARTITIONING SCHEMES 148
5.4.1 Basic partitioning scheme 149
5.4.2 Hoare’s partitioning method 150
5.5 THE QUICKSELECT ALGORITHM 155
5.6 BISECTION ALGORITHM FOR ROOT FINDING 157
x  Contents

5.7 THE WOODCUTTER PROBLEM 158


5.8 EUCLID’S ALGORITHM 164
5.9 EXERCISES 167

Chapter 6  Multiple Recursion I: Divide and Conquer 171

6.1 IS A LIST SORTED IN ASCENDING ORDER? 172


6.2 SORTING 173
6.2.1 The merge sort algorithm 174
6.2.2 The quicksort algorithm 177
6.3 MAJORITY ELEMENT IN A LIST 180
6.4 FAST INTEGER MULTIPLICATION 183
6.5 MATRIX MULTIPLICATION 186
6.5.1 Divide and conquer matrix multiplication 187
6.5.2 Strassen’s matrix multiplication algorithm 190
6.6 THE TROMINO TILING PROBLEM 191
6.7 THE SKYLINE PROBLEM 196
6.8 EXERCISES 203

Chapter 7  Multiple Recursion II: Puzzles, Fractals, and


More. . . 205

7.1 SWAMP TRAVERSAL 205


7.2 TOWERS OF HANOI 209
7.3 TREE TRAVERSALS 213
7.3.1 Inorder traversal 215
7.3.2 Preorder and postorder traversals 216
7.4 LONGEST PALINDROME SUBSTRING 217
7.5 FRACTALS 220
7.5.1 Koch snowflake 220
7.5.2 Sierpiński’s carpet 224
7.6 EXERCISES 226
Contents  xi

Chapter 8  Counting Problems 235

8.1 PERMUTATIONS 236


8.2 VARIATIONS WITH REPETITION 238
8.3 COMBINATIONS 240
8.4 STAIRCASE CLIMBING 242
8.5 MANHATTAN PATHS 244
8.6 CONVEX POLYGON TRIANGULATIONS 245
8.7 CIRCLE PYRAMIDS 248
8.8 EXERCISES 250

Chapter 9  Mutual Recursion 253

9.1 PARITY OF A NUMBER 254


9.2 MULTIPLAYER GAMES 255
9.3 RABBIT POPULATION GROWTH 256
9.3.1 Adult and baby rabbit pairs 257
9.3.2 Rabbit family tree 258
9.4 WATER TREATMENT PLANTS PUZZLE 263
9.4.1 Water flow between cities 263
9.4.2 Water discharge at each city 265
9.5 CYCLIC TOWERS OF HANOI 268
9.6 GRAMMARS AND RECURSIVE DESCENT PARSERS 273
9.6.1 Tokenization of the input string 274
9.6.2 Recursive descent parser 279
9.7 EXERCISES 288

Chapter 10  Program Execution 291

10.1 CONTROL FLOW BETWEEN SUBROUTINES 292


10.2 RECURSION TREES 297
10.2.1 Runtime analysis 303
10.3 THE PROGRAM STACK 305
xii  Contents

10.3.1 Stack frames 306


10.3.2 Stack traces 309
10.3.3 Computational space complexity 310
10.3.4 Maximum recursion depth and stack over-
flow errors 312
10.3.5 Recursion as an alternative to a stack data
structure 313
10.4 MEMOIZATION AND DYNAMIC PROGRAMMING 317
10.4.1 Memoization 317
10.4.2 Dependency graph and dynamic programming 322
10.5 EXERCISES 325

Chapter 11  Tail Recursion Revisited and Nested Recursion 333

11.1 TAIL RECURSION VS. ITERATION 333


11.2 TAIL RECURSION BY THINKING ITERATIVELY 337
11.2.1 Factorial 337
11.2.2 Decimal to base b conversion 340
11.3 NESTED RECURSION 342
11.3.1 The Ackermann function 342
11.3.2 The McCarthy 91 function 342
11.3.3 The digital root 343
11.4 TAIL AND NESTED RECURSION THROUGH FUNC-
TION GENERALIZATION 344
11.4.1 Factorial 345
11.4.2 Decimal to base b conversion 348
11.5 EXERCISES 350

Chapter 12  Multiple Recursion III: Backtracking 353

12.1 INTRODUCTION 354


12.1.1 Partial and complete solutions 354
12.1.2 Recursive structure 356
12.2 GENERATING COMBINATORIAL ENTITIES 358
Contents  xiii

12.2.1 Subsets 359


12.2.2 Permutations 364
12.3 THE N -QUEENS PROBLEM 368
12.3.1 Finding every solution 370
12.3.2 Finding one solution 372
12.4 SUBSET SUM PROBLEM 372
12.5 PATH THROUGH A MAZE 377
12.6 THE SUDOKU PUZZLE 384
12.7 0-1 KNAPSACK PROBLEM 388
12.7.1 Standard backtracking algorithm 389
12.7.2 Branch and bound algorithm 393
12.8 EXERCISES 397

FURTHER READING 403

Index 407
Preface

Recursion is one of the most fundamental concepts in computer science


and a key programming technique that, similarly to iteration, allows
computations to be carried out repeatedly. It accomplishes this by em-
ploying methods that invoke themselves, where the central idea consists
of designing a solution to a problem by relying on solutions to smaller
instances of the same problem. Most importantly, recursion is a powerful
problem-solving approach that enables programmers to develop concise,
intuitive, and elegant algorithms.
Despite the importance of recursion for algorithm design, most pro-
gramming books do not cover the topic in detail. They usually devote
just a single chapter or a brief section, which is often insufficient for
assimilating the concepts needed to master the topic. Exceptions in-
clude Recursion via Pascal, by J. S. Rohl (Cambridge University Press,
1984); Thinking Recursively with Java, by E. S. Roberts (Wiley, 2006);
and Practicing Recursion in Java, by I. Pevac (CreateSpace Indepen-
dent Publishing Platform, 2016), which focus exclusively on recursion.
The current book provides a comprehensive treatment of the topic, but
differs from the previous texts in several ways.
Numerous computer programming professors and researchers in the
field of computer science education agree that recursion is difficult for
novice students. With this in mind, the book incorporates several ele-
ments in order to foster its pedagogical effectiveness. Firstly, it contains
a larger collection of simple problems in order to provide a solid foun-
dation of the core concepts, before diving into more complex material.
In addition, one of the book’s main assets is the use of a step-by-step
methodology, together with specially designed diagrams, for guiding and
illustrating the process of developing recursive algorithms. The book also
contains specific chapters on combinatorial problems and mutual recur-
sion. These topics can broaden students’ understanding of recursion by
forcing them to apply the learned concepts differently, or in a more so-
phisticated manner. Lastly, introductory programming courses usually
focus on the imperative programming paradigm, where students primar-

xv
xvi  Preface

ily learn iteration, understanding and controlling how programs work. In


contrast, recursion requires adopting a completely different way of think-
ing, where the emphasis should be on what programs compute. In this
regard, several studies encourage instructors to avoid, or postpone, cov-
ering how recursive programs work (i.e., control flow, recursion trees, the
program stack, or the relationship between iteration and tail recursion)
when introducing recursion, since the concepts and abilities learned for
iteration may actually hamper the acquisition of skills related to recur-
sion and declarative programming. Therefore, topics related to iteration
and program execution are covered towards the end of the book, when
the reader should have mastered the design of recursive algorithms from
a purely declarative perspective.
The book also includes a richer chapter on the theoretical analysis
of the computational cost of recursive programs. On the one hand, it
contains a broad treatment of mathematical recurrence relations, which
constitute the fundamental tools for analyzing the runtime or recursive
algorithms. On the other hand, it includes a section on mathematical
preliminaries that reviews concepts and properties that are not only
needed for solving recurrence relations, but also for understanding the
statements and solutions to the computational problems in the book.
In this regard, the text also offers the possibility to learn some basic
mathematics along the way. The reader is encouraged to embrace this
material, since it is essential in many fields of computer science.
The code examples are written in Python 3, which is arguably today’s
most popular introductory programming language in top universities. In
particular, they were tested on Spyder (Scientific PYthon Development
EnviRonment). The reader should be aware that the purpose of the book
is not to teach Python, but to transmit skills associated with recursive
thinking for problem solving. Thus, aspects such as code simplicity and
legibility have been prioritized over efficiency. In this regard, the code
does not contain advanced Python features. Therefore, students with
background in other programming languages such as C++ or Java should
be able to understand the code without effort. Of course, the methods
in the book can be implemented in several ways, and readers are encour-
aged to write more efficient versions, include more sophisticated Python
constructs, or design alternative algorithms. Lastly, the book provides
recursive variants of iterative algorithms that usually accompany other
well-known recursive algorithms. For instance, it contains recursive ver-
sions of Hoare’s partition method used in the quicksort algorithm, or of
the merging method within the merge sort algorithm.
Preface  xvii

The book proposes numerous exercises at the end of the chapters,


whose fully worked-out solutions are included in an instructor’s manual
available at the book’s official website (see www.crcpress.com). Many of
them are related to the problems analyzed in the main text, which make
them appropriate candidates for exams and assignments.
The code in the text will also be available for download at the book’s
website. In addition, I will maintain a complementary website related
to the book: https://sites.google.com/view/recursiveprogrammingintro/.
Readers are more than welcome to send me comments, suggestions for
improvements, alternative (clearer or more efficient) code, versions in
other programming languages, or detected errata. Please send emails to:
[email protected].

INTENDED AUDIENCE
The main goal of the book is to teach students how to think and program
recursively, by analyzing a wide variety of computational problems. It is
intended mainly for undergraduate students in computer science or re-
lated technical disciplines that cover programming and algorithms (e.g.,
bioinformatics, engineering, mathematics, physics, etc.). The book could
also be useful for amateur programmers, students of massive open online
courses, or more experienced professionals who would like to refresh the
material, or learn it in a different or clearer way.
Students should have some basic programming experience in order
to understand the code in the book. The reader should be familiar with
notions introduced in a first programming course such as expressions,
variables, conditional and loop constructs, methods, parameters, or el-
ementary data structures such as arrays or lists. These concepts are
not explained in the book. Also, the code in the book is in accordance
with the procedural programming paradigm, and does not use object
oriented programming features. Regarding Python, a basic background
can be helpful, but is not strictly necessary. Lastly, the student should
be competent in high school mathematics.
Computer science professors can also benefit from the book, not just
as a handbook with a large collection and variety of problems, but also
by adopting the methodology and diagrams described to build recursive
solutions. Furthermore, professors may employ its structure to organize
their classes. The book could be used as a required textbook in introduc-
tory (CS1/2) programming courses, and in more advanced classes on the
design and analysis of algorithms (for example, it covers topics such as
xviii  Preface

divide and conquer, or backtracking). Additionally, since the book pro-


vides a solid foundation of recursion, it can be used as a complementary
text in courses related to data structures, or as an introduction to func-
tional programming. However, the reader should be aware that the book
does not cover data structures or functional programming concepts.

BOOK CONTENT AND ORGANIZATION


The first chapter assumes that the reader does not have any previous
background on recursion, and introduces fundamental concepts, nota-
tion, and the first coded examples.
The second chapter presents a methodology for developing recursive
algorithms, as well as diagrams designed to help thinking recursively,
which illustrate the original problem and its decomposition into smaller
instances of the same problem. It is one of the most important chapters
since the methodology and recursive diagrams will be used throughout
the rest of the book. Readers are encouraged to read the chapter, re-
gardless of their previous background on recursion.
Chapter 3 reviews essential mathematical fundamentals and nota-
tion. Moreover, it describes methods for solving recurrence relations,
which are the main mathematical tools for theoretically analyzing the
computational cost of recursive algorithms. The chapter can be skipped
when covering recursion in an introductory course. However, it is in-
cluded early in the book in order to provide a context for characteriz-
ing and comparing different algorithms regarding their efficiency, which
would be essential in a more advanced course on design and analysis of
algorithms.
The fourth chapter covers “linear recursion.” This type of recursion
leads to the simplest recursive algorithms, where the solutions to com-
putational problems are obtained by considering the solution to a single
smaller instance of the problem. Although the proposed problems can
also be solved easily through iteration, they are ideal candidates for in-
troducing fundamental recursive concepts, as well as examples of how to
use the methodology and recursive diagrams.
The fifth chapter covers a particular type of linear recursion called
“tail recursion,” where the last action performed by a method is a re-
cursive call, invoking itself. Tail recursion is special due to its relation-
ship with iteration. This connection will nevertheless be postponed until
Chapter 11. Instead, this chapter focuses on solutions from a purely
declarative approach, relying exclusively on recursive concepts.
Preface  xix

The advantages of recursion over iteration are mainly due to the use
of “multiple recursion,” where methods invoke themselves several times,
and the algorithms are based on combining several solutions to smaller
instances of the same problem. Chapter 6 introduces multiple recursion
through methods based on the eminent “divide and conquer” algorithm
design paradigm. While some examples can be used in an introductory
programming course, the chapter is especially appropriate in a more ad-
vanced class on algorithms. Alternatively, Chapter 7 contains challenging
problems, related to puzzles and fractal images, which can also be solved
through multiple recursion, but are not considered to follow the divide
and conquer approach.
Recursion is used extensively in combinatorics, which is a branch
of mathematics related to counting that has applications in advanced
analysis of algorithms. Chapter 8 proposes using recursion for solving
combinatorial counting problems, which are usually not covered in pro-
gramming texts. This unique chapter will force the reader to apply the
acquired recursive thinking skills to a different family of problems. Lastly,
although some examples are challenging, many of the solutions will have
appeared in earlier chapters. Thus, some examples can be used in an
introductory programming course.
Chapter 9 introduces “mutual recursion,” where several methods in-
voke themselves indirectly. The solutions are more sophisticated since it
is necessary to think about several problems simultaneously. Neverthe-
less, this type of recursion involves applying the same essential concepts
covered in earlier chapters.
Chapter 10 covers how recursive programs work from a low-level
point of view. It includes aspects such as tracing and debugging, the
program stack, or recursion trees. In addition, it contains a brief intro-
duction to memoization and dynamic programming, which is another
important algorithm design paradigm.
Tail-recursive algorithms can not only be transformed to iterative
versions; some are also designed by thinking iteratively. Chapter 11 ex-
amines the connection between iteration and tail recursion in detail. In
addition, it provides a brief introduction to “nested recursion,” and in-
cludes a strategy for designing simple tail-recursive functions that are
usually defined by thinking iteratively, but through a purely declarative
approach. These last two topics are curiosities regarding recursion, and
should be skipped in introductory courses.
The last chapter presents backtracking, which is another major al-
gorithm design technique that is used for searching for solutions to com-
xx  Preface

putational problems in large discrete state spaces. The strategy is usu-


ally applied for solving constraint satisfaction and discrete optimization
problems. For example, the chapter will cover classical problems such as
the N-queens puzzle, finding a path through a maze, solving sudokus, or
the 0-1 knapsack problem.

POSSIBLE COURSE ROAD MAPS


It is possible to cover only a subset of the chapters. The road map for
introductory programming courses could be Chapters 1, 2, 4, 5, and 10.
The instructor should decide whether to include examples from Chap-
ters 6–9, and whether to cover the first section of Chapter 11.
If students have previously acquired skills to develop linear-recursive
methods, a more advanced course on algorithm analysis and design could
cover Chapters 2, 3, 5, 6, 7, 9, 11, and 12. Thus, Chapters 1, 4, and 10
could be proposed as readings for refreshing the material. In both of
these suggested road maps Chapter 8 is optional. Finally, it is important
to cover Chapters 10 and 11 after the previous ones.

ACKNOWLEDGEMENTS
The content of this book has been used to teach computer programming
courses at Universidad Rey Juan Carlos, in Madrid (Spain). I am grate-
ful to the students for their feedback and suggestions. I would also like
to thank Ángel Velázquez and the members of the LITE (Laboratory
of Information Technologies in Education) research group for providing
useful insights regarding the content of the book. I would also like to
express my gratitude to Luís Fernández, computer science professor at
Universidad Politécnica de Madrid, for his advice and experience related
to teaching recursion. A special thanks to Gert Lanckriet and members
of the Computer Audition Laboratory at University of California, San
Diego.

Manuel Rubio-Sánchez
July, 2017
List of Figures

1.1 Examples of recursive entities. 2


1.2 Recursive decomposition of lists and trees. 6
1.3 Family tree representing the descendants of a per-
son, which are its children plus the descendants of
its children. 7
1.4 Recursive problem solving. 8
1.5 Decompositions of the sum of the first positive integers. 9
1.6 Decompositions of the sum of the elements in a list,
denoted as a, of (n = 9) numbers. 12
1.7 Functions that compute the sum of the first n nat-
ural numbers in several programming languages. 15
1.8 Data structures similar to lists, and parameters nec-
essary for defining sublists. 18
1.9 Thought experiment in a classroom, where an in-
structor asks a student to add the first 100 positive
integers. S(n) represents the sum of the first n pos-
itive integers. 23

2.1 General template for designing recursive algorithms. 32


2.2 Additional diagrams that illustrate the decomposi-
tion of the sum of the first positive integers when
the problem size is decreased by a unit. 38
2.3 When thinking recursively we generally do not need
to decompose a problem into every instance of
smaller size. 39
2.4 Decompositions of the Fibonacci function. 40

xxi
xxii  List of Figures

2.5 General diagram for thinking about recursive cases


(when a problem is decomposed into a single self-
similar subproblem). 42
2.6 Diagram showing a decomposition of the sum of the
first n positive integers S(n) that uses two subprob-
lems of half the size as the original. 45
2.7 Diagram showing a decomposition of the problem
consisting of printing the digits of a nonnegative in-
teger on the console, in reversed order, and verti-
cally. A particular (n = 2743) and a general m-digit
(n = dm−1 ⋯ d1 d0 ) case are shown in (a) and (b),
respectively. 49
2.8 General diagram for thinking about recursive cases,
when a problem is decomposed into several (N ) self-
similar subproblems. 50
2.9 Alternative diagram showing a divide and conquer
decomposition, and the recursive thought process,
for the problem of finding the largest value in a list.
The thick and thin arrows point to the solutions of
the problem and subproblems, respectively. 50
2.10 Diagram showing a decomposition of the sum of the
first n positive integers S(n) that uses two subprob-
lems of (roughly) half the size as the original, when
n is odd. 54

3.1 Graphical mnemonic for determining the quadratic


formula for the sum of the first n positive integers (S(n)). 63
3.2 Right triangle used for showing trigonometric definitions. 67
3.3 Geometric interpretation of vector addition and sub-
traction. 69
3.4 Rotation matrix (counterclockwise). 70
3.5 The highest-order term determines the order of
growth of a function. For T (n) = 0.5n2 + 2000n +
50000 the order is quadratic, since the term 0.5n2
clearly dominates the lower-order terms (even added
up) for large values of n. 71
List of Figures  xxiii

3.6 Orders of growth typically used in computational


complexity. 72
3.7 Graphical illustrations of asymptotic notation defi-
nitions for computational complexity. 74
3.8 Sequence of operations carried by the function in
Listing 1.1 in the base case. 77
3.9 Sequence of operations carried by the function in
Listing 1.1 in the recursive case. 78
3.10 Summary of the expansion method. 81
3.11 An algorithm processes the shaded bits of numbers
from 1 to 2n − 1 (for n = 4). 102

4.1 Conversion of 142 into its representation (1032) in


base 5. 118
4.2 Pascal’s triangle. 126
4.3 Decomposition and recovery of a row of Pascal’s triangle. 126
4.4 Ladder of resistors problem. 127
4.5 Equivalence of circuits with resistors. 127
4.6 Decomposition of the ladder of resistors problem,
and derivation of the recursive case through induction. 128
4.7 The product of two nonnegative integers n and m
can be represented as the number of unit squares
that form an n × m rectangle. 130
4.8 Step of the insertion sort algorithm. 132

5.1 Decomposition related to the binary search algorithm. 141


5.2 Binary search tree that stores information about a
birthday calendar. 145
5.3 Binary search tree in Figure 5.2 and (5.1), where
each node is a list of four elements: name (string),
birthday (string), left subtree (list), and right sub-
tree (list). 145
5.4 Decomposition associated with several algorithms
related to binary search trees. 146
5.5 Partitioning of a list used in the quicksort and quick-
select algorithms. 148
xxiv  List of Figures

5.6 Example of Hoare’s partition method. 151


5.7 Decomposition of Hoare’s partitioning problem. 153
5.8 Base case and problem decomposition used by the
quickselect algorithm. 155
5.9 Steps of the bisection algorithm. 158
5.10 Base case of the bisection algorithm (b − a ≤ 2ǫ). 159
5.11 Instance of the woodcutter problem. 160
5.12 Decomposition of the woodcutter problem. 162
5.13 Steps of the binary search algorithm related to an
instance of the woodcutter problem, for w = 10. 164
5.14 Steps in the counting sort algorithm. 167
5.15 Main idea behind Newton’s method. 169

6.1 Merge sort algorithm. 174


6.2 Decomposition of the quicksort algorithm. 178
6.3 Types of trominoes ignoring rotations and reflections. 192
6.4 Tromino tiling problem. 192
6.5 Decomposition of the tromino tiling problem. 192
6.6 L trominoes considering rotations. 195
6.7 The skyline problem. 197
6.8 Base case for the skyline problem with one building. 198
6.9 Recursive case for the skyline problem. 199
6.10 Possible situations when merging skylines that
change at the same location x. 200
6.11 Possible situations when merging skylines and x1 < x2 . 202

7.1 Swamp traversal problem. 206


7.2 Decomposition of the swamp traversal problem. 207
7.3 The towers of Hanoi puzzle. 209
7.4 Solution to the towers of Hanoi puzzle for n = 2 disks. 210
7.5 Solution to the towers of Hanoi puzzle for n = 4 disks. 212
7.6 Decomposition of the towers of Hanoi problem. 213
7.7 Output of Listing 7.3, which represents the solution
to the towers of Hanoi puzzle for n = 4 disks. 214
List of Figures  xxv

7.8 Concrete example of the decomposition of the in-


order traversal problem. 215
7.9 Decomposition of the problem of finding the longest
palindrome substring. 218
7.10 Koch curve fractal. 221
7.11 Koch snowflake fractal. 222
7.12 Koch curve decomposition. 223
7.13 New endpoints of shorter segments when applying
an iteration related to the Koch curve. 224
7.14 Sierpiński’s carpet after 0, 1, 2, and 3 iterations. 226
7.15 Sierpiński’s carpet decomposition. 227
7.16 Simulation of tick marks on an English ruler. 229
7.17 Rules for the “sideways” variant of the towers of
Hanoi puzzle. 230
7.18 Sierpiński’s triangle after 0, 1, 2, and 3 iterations. 231
7.19 Hilbert curves of orders 1–6. 232

8.1 Possible permutations (lists) of the first four positive


integers. 236
8.2 Decomposition of the problem that counts the num-
ber of possible permutations of n different elements,
denoted as f (n). 237
8.3 Decomposition of the possible permutations of the
first four positive integers. 238
8.4 Example of a k-element variation with repetition of
n items. 239
8.5 Decomposition of the problem that counts the num-
ber of k-element variations with repetition of n items. 240
8.6 Decomposition of the problem that counts the num-
ber of k-element combinations of n items. 241
8.7 A possible way to climb a staircase by taking leaps
of one or two steps. 242
8.8 Decomposition of the problem that counts the num-
ber of ways to climb a staircase by taking leaps of
one or two steps. 243
xxvi  List of Figures

8.9 Manhattan paths problem. 244


8.10 Decomposition of the Manhattan paths problem. 245
8.11 Two possible triangulations of the same convex poly-
gon containing seven vertices. 246
8.12 Six (n−2) possible triangles associated with an edge
of an octagon (n = 8). 246
8.13 Decomposition of the convex polygon triangulation
problem for fixed triangles. 247
8.14 Total number of triangulations related to an octagon. 247
8.15 Valid and invalid circle pyramids. 248
8.16 Pyramids of n = 4 circles on the bottom row,
grouped according to how many circles appear in
the row immediately above it. 249
8.17 Decomposition of the circle pyramids problem for
subproblems of a fixed size. 250
8.18 Two-element variations with repetition of the four
items in {a,b,c,d}. 250
8.19 Tiling of a 2 × 10 rectangle with 1 × 2 or 2 × 1 domino tiles. 251
8.20 Five different binary trees that contain three nodes. 252
8.21 Pyramids of n = 4 circles on the bottom row,
grouped according to their height. 252

9.1 Calls of mutually recursive methods. 254


9.2 Illustration of the rabbit population growth rules. 257
9.3 Rabbit family tree after seven months. 259
9.4 Concrete example of the decomposition of the rabbit
population growth problem into self-similar subproblems. 260
9.5 Concrete decompositions of the problems that lead
to two mutually recursive methods for solving the
rabbit population growth problem. 261
9.6 Water treatment plants puzzle. 263
9.7 Decomposition of the water treatment plants puzzle
when modeling the water flow between cities. 264
9.8 Three problems for the mutually recursive solution
of the water treatment plants puzzle. 266
List of Figures  xxvii

9.9 Decompositions of the three problems for the mutu-


ally recursive solution of the water treatment plants
puzzle. 267
9.10 The cyclic towers of Hanoi puzzle. 268
9.11 Illustration of two different problems comprised in
the cyclic towers of Hanoi puzzle. 269
9.12 Three operations used to implement the recursive
methods for solving the cyclic towers of Hanoi puzzle. 270
9.13 Operations for moving n disks clockwise. 271
9.14 Operations for moving n disks counterclockwise. 272
9.15 Decomposition of a mathematical formula into cat-
egories such as expressions, terms, factors, or numbers. 280
9.16 Method calls of the mutually recursive functions
that implement the recursive descent parser asso-
ciated with the calculator program. 282
9.17 Possible decompositions of an expression. 284
9.18 Rules of the Spin-out brainteaser challenge.
®
289

10.1 Sequence of method calls and returns for the code


in Listing 10.1. 293
10.2 Sequence of calls and returns for sum_first_naturals(4). 294
10.3 Sequence of calls and returns for the procedure
mystery_method_1(’Word’). 296
10.4 Sequence of calls and returns for the procedure
mystery_method_2(’Word’). 298
10.5 Recursion trees for sum_first_naturals(4). 299
10.6 Activation tree for sum_first_naturals(4). 299
10.7 Activation tree for gcd1(20,24). 300
10.8 Recursion (a) and activation (b) trees for fibonacci(6). 301
10.9 Activation tree for the mutually recursive functions
in Listing 9.1. 302
10.10 Recursion tree for the mutually recursive functions
in (1.17) and (1.18). 303
10.11 Activation tree for the nested recursive function in (1.19). 304
xxviii  List of Figures

10.12 Recursion tree associated with the recurrence


T (n) = 2T (n/2) + n2 . 305
10.13 The stack and queue data structures. 306
10.14 Evolution of stack frames when running the code
in Listing 10.1, where cos, ∣ ⋅ ∣, and ⟨⋅, ⋅⟩ repre-
sent the methods cosine, norm_Euclidean, and
dot_product, respectively. 307
10.15 Program stack and data at step 5 in Figure 10.14. 308
10.16 Evolution of stack frames for sum_first_naturals(4). 309
10.17 Evolution of stack frames for fibonacci(5). 311
10.18 File system tree example. 313
10.19 State of a stack data structure when running the
iterative code in Listing 10.3, for the files and folders
in Figure 10.18. 315
10.20 Evolution of stack frames when running the code in
Listing 10.4, for the files and folders in Figure 10.18. 317
10.21 Overlapping subproblems when computing Fi-
bonacci numbers through F (n) = F (n − 1) + F (n − 2). 319
10.22 Dependency graph for F (n) = F (n − 1) + F (n − 2). 322
10.23 Dependency graph for Listing 10.6, which solves the
longest palindrome substring problem. 323
10.24 Matrix L after running Listing 10.7 with s = 'bcaac'. 325
10.25 Alternative binary search tree that stores informa-
tion about a birthday calendar. 326
10.26 Transformation of a line segment into five smaller
ones for a Koch curve variant. 330
10.27 “Koch square” variant for n = 4. 330

11.1 State of the program stack when running the base


case relative to a call to gcd1(20,24). 334
11.2 Similarities between the iterative and tail-recursive
codes that compute the factorial function. 339
11.3 McCarthy 91 function. 343

12.1 One solution to the four-queens puzzle. 354


Exploring the Variety of Random
Documents with Different Content
Taxi Scandal. 1928.
TED CARSON MOUNTED SERIES.
Universal Pictures Corp.
Red Rider. 1929.
Trail of the Pack. 1929.
TED CARSON NORTHWESTERN SERIES.
Universal Pictures Corp.
Law in the Saddle. 1930.
Redcoat's Code. 1929.
TED CARSON WESTERN.
Universal Pictures Corp.
Border Wolf. 1929.
Crooked Trails. 1930.
TELEVISUAL.
Audio Productions, Inc.
Baby Crest Products. © 1939.
Barbara Lee Fashions. © 1939.
Guardian Shoes. © 1939.
TENDERFOOT THRILLER SERIES.
Universal Pictures Corp.
Close Call. 1929.
Red Romance. 1929.
Saps and Saddles. 1928.
TERRYTOONS. SEE ALSO Paul Terry-Toons.
Audio Cinema, Inc.
Caviar. 1930.
Hawaiian Pineapples. 1930.
Hot Turkey. 1930.
Indian Pudding. 1930.
Pretzels. 1930.
Roman Punch. 1930.
Spanish Onions. 1930.
Swiss Cheese. 1930.
Terrytoons, Inc.
Africa Squawks. 1939.
Barnyard Boss. 1937.
Barnyard Egg-Citement. 1939.
Big Top. 1938.
Bugs Beetle and His Orchestra. 1938.
Bully Frog. 1936.
Chris Columbo. 1938.
Close Shave. 1937.
Cuckoo Bird. 1939.
Dancing Bear. 1937.
Devil of the Deep. 1938.
Eliza Runs Again. 1938.
Farmer Al Falfa In The Health Farm. 1936.
Farmer Al Falfa in The Tin Can Tourist. 1937.
Frozen Feet. 1939.
Gandy Goose in a Bully Romance. 1939.
Gandy Goose in Doomsday. 1938.
Gandy Goose in G Man Jitters. 1939.
Gandy Goose in The Frame-up. 1938.
Gandy the Goose. 1938.
Glass Slipper. 1938.
Golden West. 1939.
Goose Flies High. 1938.
Happy and Lucky. 1938.
Here's to Good Old Jail. 1938.
His Day Off. 1938.
Homeless Pup. 1937.
Hook, Line and Sinker. 1939.
Housewife Herman. 1938.
Just Ask Jupiter. 1938.
Kiko and the Honey Bears. 1936.
Kiko the Kangaroo in Skunked Again. 1936.
Kiko's Cleaning Day. 1937.
Last Indian. 1938.
Lion Hunt. 1938.
Maid in China. 1938.
Milk for Baby. 1938.
Mrs. O'Leary's Cow. 1938.
Mountain Romance. 1938.
Newcomer. 1938.
Nick's Coffee Pot. 1939.
Nutty Network. 1939.
Old Fire Horse. 1939.
One Gun Gary in the Nick of Time. 1939.
Owl and the Pussy Cat. 1939.
Ozzie Ostrich Comes to Town. 1937.
Paper Hangers. 1937.
Prize Guest. 1939.
Robin Hood in an Arrow Escape. 1936.
Robinson Crusoe's Broadcast. 1938.
Salty McGuire. 1937.
Saw Mill Mystery. 1937.
School Birds. 1937.
String Bean Jack. 1938.
Their Last Bean. 1939.
Three Bears. 1939.
Trailer Life. 1937.
Two Headed Giant. 1939.
Village Blacksmith. 1938.
Villain Still Pursued Her. 1937.
Wolf's Side of the Story. 1938.
TEXAS RANGER.
R-C Pictures Corp.
Range Terror. 1925.
Trigger Finger. 1924.
Universal Pictures Corp.
Ambuscade. 1928.
Law Rider. 1927.
Unexpected Hero. 1928.
THALIAN COMEDY.
Universal Pictures Corp.
Doctor's Orders. 1932.
Foiled Again. 1932.
Hollywood Trouble. 1935.
World's Fair and Warmer. 1934.
THELMA TODD AND PATSY KELLY COMEDY. SEE ALSO Hal Roach-
Thelma Todd and Patsy Kelly Comedy; Todd-Kelly Comedy.
Metro-Goldwyn-Mayer Corp.
All American Toothache. 1936.
Babes in the Goods. 1934.
Bum Voyage. 1934.
I'll Be Suing You. 1934.
Maid in Hollywood. 1934.
Misses Stooge. 1935.
Soup and Fish. 1934.
Three Chumps Ahead. 1934.
THRILL SERIES.
Universal Pictures Corp.
Air Patrol. 1927.
Sky-High Saunders. 1927.
Smiling Terror. 1928.
Three Miles Up. 1927.
Wolf's Trail. 1927.
Won in the Clouds. 1927.
TIRED BUSINESS MAN SERIES.
Pathe Exchange, Inc.
Button My Back. 1929.
Caught in the Kitchen. 1928.
His New Stenographer. 1928.
Hubby's Latest Alibi. 1928.
Motoring Mamas. 1929.
Pink Pajamas. 1929.
TOBY THE PUP.
RKO Radio Pictures, Inc.
Aces Up. 1931.
Brown Derby. 1931.
Bug House. 1930.
Bull Thrower. 1931.
Circus Time. 1931.
Down South. 1931.
Fiddler. 1930.
Halloween. 1931.
Milkman. 1931.
Miner. 1930.
Showman. 1930.
TODD-KELLY COMEDY. SEE
ALSO Hal Roach-Thelma Todd and Patsy Kelly Comedy;
Thelma Todd and Patsy Kelly Comedy.
Metro-Goldwyn-Mayer Corp.
Done in Oil. 1934.
Opened by Mistake. 1934.
Sing Sister Sister. 1935.
Tin Man. 1935.
Treasure Blues. 1935.
Metro-Goldwyn-Mayer Distributing Corp.
One Horse Farmers. 1934.
TOM AND JERRY CARTOONS.
RKO Radio Pictures, Inc.
Barnyard Bunk. 1932.
Doughnuts. 1933.
Happy Hobos. 1933.
Hook and Ladder Hokum. 1933.
In the Park. 1933.
Magic Mummy. 1933.
Pencil Mania. 1932.
Phantom Rocket. 1933.
Piano Tooners. 1932.
Puzzled Pals. 1933.
Spanish Twist. 1932.
Tight Rope Tricks. 1933.
Van Beuren Corp.
In the Bag. 1932.
Jungle Jam. 1931.
Plane Dumb. 1932.
Polar Pals. 1931.
Rabid Hunters. 1932.
Rocketeers. 1932.
Swiss Trick. 1931.
Trouble. 1931.
Tuba Tooter. 1932.
Wot a Night. 1931.
TOM HOWARD COMEDIES.
Kent (Larry) Productions, Inc.
Aces Wild. 1933.
Acid Test. 1932.
Drug on the Market. 1933.
Honesty Pays—but Not Much. 1933.
Mouse Trapper. 1932.
W. K. D. Productions, Inc.
Static. 1933.
TOONERVILLE TROLLEY SERIES.
Betzwood Film Co.
Boos-Em-Friends. 1921.
Skipper's Scheme. 1921.
Skipper's Treasure Garden. 1921.
Toonerville Tactics. 1921.
Betzwood Film Co. Producers.
Skipper Has His Fling. 1921.
TOOTS AND CASPER SERIES.
Standard Cinema Corp.
Big Hearted Toots. 1929.
Casper's Night Out. 1929.
Casper's Week End. 1928.
Don't Say Ain't. 1929.
Family Meal Ticket. 1928.
Fooling Casper. 1928.
His Wife's Secret. 1929.
Smile, Buttercup, Smile. 1929.
Spareribs Reforms. 1929.
Toots' Big Idea. 1929.
What a Wife. 1928.
Who's the Boss? 1929.
TOPICS OF THE DAY.
Pathe Exchange, Inc.
Cover Charge. 1930.
Home Sweet Home. 1930.
In the Park. 1930.
On the Air. 1930.
Van Beuren News. 1930.
What! No Bait! 1930.
TRAVELAUGHS. SEE ALSO Walter Futter's Travelaughs.
Universal Film Mfg. Co., Inc.
China Awakened. 1917.
Seeing Ceylon with Hy Mayer. 1917.
Such Is Life in Alaska. 1916.
Such Is Life in China. 1916.
WAFilms, Inc.
With John P. Medbury in Turkey. 1931.
TRAVELING MAN COMEDIES.
RKO Pathe Distributing Corp.
Beach Pajamas. 1931.
That's My Line. 1931.
RKO Pathe Pictures, Inc.
Perfect 36. 1932.
Selling Shorts. 1931.
TRUE DETECTIVE STORIES OF CELEBRATED CASES.
RKO Radio Pictures, Inc.
Facing the Gallows. 1931.
Radio Pictures, Inc.
Mystery of Compartment C. 1931.
Swift Justice. 1931.
TUXEDO COMEDIES. SEE ALSO Educational-Tuxedo Comedy.
Christie Film Co., Inc.
Home Cured. 1926.
Educational Film Exchanges, Inc.
Blondes Beware. 1928.
Bride and Gloomy. 1931.
Cleaning Up. 1926.
Close Shaves. 1926.
Don't Divorce Him. 1931.
Don't Get Excited. 1929.
Drumming It In. 1930.
Expensive Kisses. 1930.
Girls Will Be Boys. 1931.
Her Husky Hero. 1927.
Honest Injun. 1926.
Humdinger. 1926.
Husbands Must Play. 1929.
Live News. 1927.
Love Your Neighbor. 1930.
Making Whoopee. 1928.
Mr. Cinderella. 1926.
My Stars. 1926.
Open House. 1926.
Slippery Head. 1928.
Social Sinners. 1929.
Tourist. 1925.
Trouble for Two. 1930.
Visitors Welcome. 1928.
Wedded Blisters. 1928.
What a Head! 1931.
Reel Comedies, Inc.
Curses. 1925.
Dynamite Doggie. 1925.
Lovemania. 1924.
Never Again. 1924.
Stupid but Brave. 1924.
U
U. F. A. ODDITY. SEE ALSO M. G. M. Oddity; Oddity.
Metro-Goldwyn-Mayer Distributing Corp.
Allah Il Allah. 1929.
Ancient Art. 1929.
Bits of Africa. 1928.
Brown Gold. 1929.
Dealers in Babies. 1929.
Dying Jungle. 1929.
Eagle's Nest. 1929.
Golden Fleeces. 1928.
Happy Omen. 1928.
Jungle Orphan. 1929.
Lacquer & Pearls. 1929.
Leader. 1929.
Lonely Lapland. 1928.
Murder. 1928, 1929.
Nature's Wizardry. 1928.
Oriental Motoring. 1929.
Outlandish Manners. 1929.
Palace of Honey. 1928.
Persian Wedding. 1929.
Primitive Housekeeping. 1928.
Sacred Baboon. 1928.
Sanctuary. 1928.
Savage Customs. 1928.
Secret Boozehounds. 1929.
Sleeping Death. 1928.
Strange Prayers. 1928, 1929.
Tiny Housekeepers. 1929.
Tokens of Manhood. 1928.
Uphill and Down. 1928, 1929.
Where Kisses Come High. 1928.
Wicked Kasimir. 1928.
Wives for Sale. 1928, 1929.
World's Playground. 1928, 1929.
UNNATURAL HISTORY.
Bray, J. R.
Pelican's Bill. 1926.
Bray Productions, Inc.
Cat's Nine Lives. 1927.
Cat's Whiskers. 1926.
Hyena's Laugh. 1927.
Mule's Disposition. 1926.
Pig's Curly Tail. 1926.
Tail of the Monkey. 1926.
V
VAGABOND.
Van Beuren Corp.
Eyes on Russia, from the Caucasus to Moscow. 1934.
Fakeers of the East. 1934.
Isle of Spice. 1935.
Land of the Eagle. 1935.
Red Republic from Baku to Dnieprostroi. 1934.
Saar. 1935.
VAGABOND-ACE HIGH SERIES. SEE ALSO Ace High Series.
Van Beuren Corp.
Little New New York. 1935.
Topnotchers. 1935.
VAGABOND ADVENTURE SERIES.
Pathe Exchange, Inc.
Dogs of Solitude. 1931.
Drums of Fear. 1930.
Ebony Shrine. 1930.
Glacier's Secret. 1930.
Glory of Spain. 1930.
Golden Pagoda. 1930.
Jungle Terror. 1930.
Love That Kills. 1930.
Mystic Isles. 1930.
Sacred Fires. 1930.
Sands of Egypt. 1930.
Satan's Fury. 1930.
Spirit of the Sho-gun. 1930.
Tale of Tutuila. 1931.
Temples of Silence. 1930.
Venetian Nights. 1930.
Well of Fortaleza. 1931.
Wizardland. 1930.
Zuyder Zee. 1931.
RKO Pathe Distributing Corp.
Beneath the Southern Cross. 1931.
Call of Mohammed. 1931.
Fallen Empire. 1931.
Hurricane Island. 1931.
Shadow of the Dragon. 1931.
Thom, the Unknown. 1931.
Utmost Isle. 1931.
RKO Pathe Pictures, Inc.
Children of the Sun. 1931.
Door of Asia. 1932.
Drums of the Orient. 1932.
Empire of the Sun. 1932.
Land of Gandhi. 1932.
Second Paradise. 1932.
Shanghai. 1932.
Song of the Voodoo. 1931.
Thru the Ages. 1931.
Wild New Guinea. 1932.
RKO Radio Pictures, Inc.
Antwerp. 1933.
Bali. 1933.
Contrasts in China. 1933.
Holland Mosaics. 1933.
Malaysia. 1932.
Paris. 1932.
Singapore. 1932.
Van Beuren Corp.
Cuba. 1933.
Damascus. 1934.
Fallen Empire. 1931.
Gibraltar. 1934.
Holy Land. 1934.
Jamaica. 1935.
Madeira. 1934.
Moorish Spain. 1934.
Quebec. 1935.
Roumania. 1935.
VAGABOND EASY ACES. SEE ALSO Easy Aces Series.
Van Beuren Corp.
Pharaoh Land. 1935.
VAGABOND SERIES.
Pathe Exchange, Inc.
Lair of Chang-How. 1930.
Streets of Mystery. 1930.
VAN BEUREN MINIATURE.
Van Beuren Corp.
Beautiful and Dumb. 1932.
Secretary Preferred. 1932.
VAN BEUREN TRAVELOG.
Van Beuren Corp.
Fakeers of the East. 1934.
Gibraltar. 1934.
Isle of Spice. 1935.
Red Republic from Baku to Dnieprostroi. 1934.
Saar. 1935.
VANITY COMEDIES. SEE ALSO Educational-Vanity Comedies.
Christie Film Co.
He's a Honey. 1932.
Hollywood Run-Around. 1932.
Keyhole Katie. 1933.
Now's the Time. 1932.
Techno-Crazy. 1933.
Christie Film Co., Inc.
Freshman's Finish. 1931.
Girl Rush. 1931.
Educational Film Exchanges, Inc.
College Cuties. 1931.
College Racket. 1931.
Don't Give Up. 1930.
Happy Little Honeymoon. 1931.
Shotgun Wedding. 1931.
VAN RONKEL COMEDY.
Universal Pictures Corp.
Bring 'Em Back a Lie. 1935.
Double Crossed. 1935.
Father Knows Best. 1935.
His Last Fling. 1935.
My Girl Sally. 1935.
VARIETY COMEDY.
Pathe Exchange, Inc.
Beach Babies. 1929.
Haunted. 1929.
His Birthday Suit. 1930.
Wednesday at the Ritz. 1930.
VITAPHONE VARIETY.
Vitaphone Corp.
Dean of Pasteboards. 1939.
Mr. and Mrs. Jesse Crawford at Home. 1939.
One Day Stand. 1939.
Palm Beach Knights. 1937.
Right Way. 1939.
Robbin' Good. 1938.
Sword Fishing. 1939.
Tax Trouble. 1939.
Vaudeville Interlude. 1938.
Vitaphone Capers. 1937.
Vote Trouble. 1939.
Witness Trouble. 1939.
W
WALT DISNEY CARTOON. SEE ALSO Walt Disney Mickey Mouse.
Columbia Pictures Corp.
Hell's Bells. 1930.
Merry Dwarfs. 1930.
Skeleton Dance. 1930.
Springtime. 1930.
Terrible Toreador. 1930.
Disney (Walt) Productions, Ltd.
Mickey's Revue. 1932.
WALT DISNEY COMIC. SEE ALSO Walt Disney Mickey Mouse.
Columbia Pictures Corp.
Cannibal Capers. 1930.
Frolicking Fish. 1930.
Night. 1930.
Summer. 1930.
Disney (Walt) Productions, Ltd.
Cat's Nightmare. 1931.
Disney, Walter E.
Arctic Antics. 1930.
Gallopin' Gaucho. 1930.
Monkey Melodies. 1930.
Plane Crazy. 1930.
WALT DISNEY COMIC, MICKEY MOUSE SERIES. SEE Walt Disney
Mickey Mouse.
Disney (Walt) Enterprises.
Donald's Penguin. 1938.
Disney (Walt) Productions.
Beach Picnic. 1939.
Donald's Cousin Gus. 1939.
Hockey Champ. 1939.
Sea Scouts. 1939.
Disney (Walt) Productions, Ltd.
Donald's Better Self. 1938.
Donald's Golf Game. 1938.
Donald's Lucky Day. 1938.
Donald's Nephews. 1938.
Donald's Ostrich. 1937.
Good Scouts. 1938.
Self Control. 1938.
WALT DISNEY DONALD DUCK AND GOOF.
Disney (Walt) Productions, Ltd.
Fox Hunt. 1938.
Polar Trappers. 1938.
WALT DISNEY MICKEY MOUSE. SEE ALSO Walt Disney Cartoon; Walt
Disney Comic.
Columbia Pictures Corp.
Gorilla Mystery. 1930.
Disney (Walt) Enterprises.
Musical Farmer. 1932.
Disney (Walt) Productions.
Goofy and Wilbur. 1939.
Pointer. 1939.
Society Dog Show. 1939.
Disney (Walt) Productions, Ltd.
Alpine Climbers. 1936.
Barnyard Broadcast. 1931.
Barnyard Olympics. 1932.
Beach Party. 1931.
Bears and Bees. 1932.
Birthday Party. 1931.
Blue Rhythm. 1931.
Boat Builders. 1938.
Brave Little Tailor. 1938.
Building a Building. 1932.
Camping Out. 1934.
Castaway. 1931.
Clock Cleaners. 1937.
Delivery Boy. 1931.
Dognapper. 1934.
Don Donald. 1936.
Donald and Pluto. 1936.
Duck Hunt. 1932.
Fishin' Around. 1931.
Giantland. 1933.
Grocery Boy. 1932.
Gulliver Mickey. 1934.
Hawaiian Holiday. 1937.
Just Dogs. 1932.
Klondike Kid. 1932.
Lonesome Ghosts. 1937.
Mad Doctor. 1933.
Mad Dog. 1932.
Magician Mickey. 1937.
Mail Pilot. 1933.
Mickey Cuts Up. 1931.
Mickey in Arabia. 1932.
Mickey Plays Papa. 1934.
Mickey Steps Out. 1931.
Mickey's Amateurs. 1937.
Mickey's Circus. 1936.
Mickey's Elephant. 1936.
Mickey's Gala Premier. 1933.
Mickey's Garden. 1935.
Mickey's Good Deed. 1932.
Mickey's Man Friday. 1935.
Mickey's Mechanical Man. 1933.
Mickey's Mellerdrammer. 1933.
Mickey's Nightmare. 1932.
Mickey's Orphans. 1931.
Mickey's Pal Pluto. 1933.
Mickey's Parrot. 1938.
Mickey's Revue. 1932.
Mickey's Rival. 1936.
Mickey's Steam-Roller. 1934.
Mickey's Trailer. 1938.
Moose Hunt. 1931.
Moose Hunters. 1937.
Moving Day. 1936.
Olden Days. 1933.
Orphans' Benefit. 1934.
Pet Store. 1933.
Puppy Love. 1933.
Shanghaied. 1934.
Steeplechase. 1933.
Thru the Mirror. 1936.
Touchdown Mickey. 1932.
Trader Mickey. 1932.
Traffic Troubles. 1931.
Two-Gun Mickey. 1934.
Wayward Canary. 1932.
Whoopee Party. 1932.
Worm Turns. 1936.
Disney, Walter E.
Barn Dance. 1929.
Barnyard Battle. 1929.
Barnyard Concert. 1930.
Cactus Kid. 1930.
Chain Gang. 1930.
Fiddling Around. 1930.
Fire Fighters. 1930.
Gallopin' Gaucho. 1930.
Gorilla Mystery. 1930.
Haunted House. 1930.
Jazz Fool. 1929.
Jungle Rhythm. 1929.
Karnival Kid. 1929.
Mickey's Follies. 1929.
Opry House. 1929.
Pioneer Days. 1930.
Plane Crazy. 1930.
Plow Boy. 1930.
Shindig. 1930.
Steamboat Willie. 1928.
When the Cat's Away. 1929.
Wild Waves. 1930.
WALT DISNEY SILLY SYMPHONY.
Columbia Pictures Corp.
Autumn. 1930.
Frolicking Fish. 1930.
Disney (Walt) Productions.
Practical Pig. 1939.
Ugly Duckling. 1939.
Disney (Walt) Productions, Ltd.
Babes in the Woods. 1932.
Bears and Bees. 1932.
Big Bad Wolf. 1934.
Bird Store. 1932.
Birds in the Spring. 1933.
Birds of a Feather. 1931.
Broken Toys. 1936.
Bugs in Love. 1932.
Busy Beavers. 1931.
Cat's Nightmare. 1931.
China Plate. 1931.
China Shop. 1933.
Cock o' the Walk. 1935.
Cookie Carnival. 1935.
Egyptian Melodies. 1931.
Farmyard Symphony. 1938.
Father Noah's Ark. 1933.
Flowers and Trees. 1932.
Flying Mouse. 1934.
Fox Hunt. 1931.
Funny Little Bunnies. 1934.
Goddess of Spring. 1934.
Grasshopper and the Ants. 1934.
In a Clock Store. 1931.
Just Dogs. 1932.
King Neptune. 1932.
Little Hiawatha. 1937.
Lullaby Land. 1933.
Merbabies. 1938.
More Kittens. 1936.
Moth and the Flame. 1938.
Mother Goose Goes Hollywood. 1938.
Mother Goose Melodies. 1931.
Music Land. 1935.
Night Before Christmas. 1933.
Old King Cole. 1933.
Old Mill. 1937.
Peculiar Penguins. 1934.
Pied Piper. 1933.
Playful Pan. 1931.
Santa's Workshop. 1932.
Spider and the Fly. 1931.
Three Blind Mouseketeers. 1936.
Three Little Pigs. 1933.
Three Little Wolves. 1936.
Three Orphan Kittens. 1935.
Toby Tortoise Returns. 1936.
Tortoise and the Hare. 1935.
Ugly Duckling. 1931.
Water Babies. 1935.
Who Killed Cock Robin? 1935.
Wise Little Hen. 1934.
Woodland Cafe. 1937.
Wynken, Blynken, and Nod. 1938.
Disney, Walter E.
Midnight in a Toy Shop. 1930.
Winter. 1930.
WALTER DISNEY CARTOON. SEE Walt Disney Cartoon.
WALTER FUTTER NOVELTY.
Futter Corp.
Ethiopia. 1934.
Futter Corp., Ltd.
Among the Cocoons. 1934.
Arctic. 1934.
Around Malaysia. 1934.
At a County Fair. 1934.
Islands of the Pacific. 1934.
Laughing with John P. Medbury Among the Nordicks. 1934.
Laughing with John P. Medbury at Strange Championships.
1935.
Laughing with John P. Medbury in India. 1934.
Laughing with John P. Medbury in Morocco. 1933.
Laughing with John P. Medbury in the Old Days. 1935.
WALTER FUTTER'S TRAVELAUGHS. SEE ALSO Travelaughs.
WAFilms, Inc.
Among Dancing Nations. 1932.
Among the Great Open Faces. 1932.
Laughing with John P. Medbury in Africa. 1931.
Laughing with Medbury in Abyssinia. 1932.
Laughing with Medbury in Mandalay. 1932.
Laughing with Medbury in Reno. 1931.
Medbury in Borneo. 1931.
Philippines. 1932.
Voodoo Land. 1932.
Wild West. 1932.
With John P. Medbury in Death Valley. 1931.
Wonders of the World. 1932.
WALTER HIERS COMEDIES.
Christie Film Co., Inc.
Fat Chance. 1924.
Fresh Faces. 1926.
Good Spirits. 1925.
Hitchin' Up. 1926.
Hot Doggie. 1925.
Off His Beat. 1925.
Oh Bridget. 1925.
Rarin' Romeo. 1925.
Short Change. 1924.
Tender Feet. 1925.
Weak but Willing. 1926.
Wireless Lizzie. 1926.
WALTER LANTZ ANDY PANDA.
Lantz (Walter) Productions.
Life Begins for Andy Panda. 1939.
Universal Pictures Co., Inc.
Life Begins for Andy Panda. 1939.
WALTER LANTZ BILL NOLAN CARTOON.
Universal Pictures Corp.
Africa. 1930.
Farmer. 1931.
Mexico. 1930.
WALTER LANTZ CARTOON. SEE ALSO Cartoon Classics; Walter Lantz
Cartune.
Universal Pictures Co., Inc.
Cat and the Bell. 1938.
Ghost Town Frolics. 1938.
Pixie Land. 1938.
Universal Pictures Corp.
Amateur Broadcast. 1935.
Bowery Bimbos. 1930.
Broadway Folly. 1930.
Bronco Buster. 1935.
Case of the Lost Sheep. 1935.
Cold Turkey. 1929.
Crowd Snores. 1932.
Hash Shop. 1930.
Hell's Heels. 1930.
Henpecked. 1930.
Hot for Hollywood. 1930.
Hurdy Gurdy. 1930.
Kisses and Kurses. 1930.
Kounty Fair. 1929.
My Pal Paul. 1930.
Nutty Notes. 1929.
Oil's Well. 1929.
Ozzie of the Circus. 1929.
Pin Feathers. 1933.
Prison Panic. 1930.
Pussy Willie. 1929.
Snappy Salesman. 1930.
Snow Use. 1929.
Tramping Tramps. 1930.
WALTER LANTZ CARTUNE. SEE ALSO Cartune Classics; Walter Lantz
Cartoon.
Universal Pictures Co., Inc.
Arabs with Dirty Fezzes. 1939.
Baby Kittens. 1938.
Bird on Nellie's Hat. 1939.
Birth of a Toothpick. 1939.
Bolo-Mola Land. 1939.
Charlie Cuckoo. 1939.
Crackpot Cruise. 1939.
Disobedient Mouse. 1938.
Haunting We Will Go. 1939.
I'm Just a Jitterbug. 1939.
Life Begins for Andy Panda. 1939
Little Blue Blackbird. 1938.
Little Tough Mice. 1939.
One-Armed Bandit. 1939.
Rabbit Hunt. 1938.
Sailor Mouse. 1938.
Scrambled Eggs. 1939.
Silly Superstition. 1939.
Slaphappy Valley. 1939.
Sleeping Princess. 1939.
Snuffy's Party. 1939.
Soup to Mutts. 1939.
Stubborn Mule. 1939.
WALTER LANTZ LIL EIGHTBALL.
Universal Pictures Co., Inc.
Silly Superstition. 1939.
Stubborn Mule. 1939.
WALTER LANTZ NERTSERY RHYME.
Universal Pictures Co., Inc.
Magic Beans. 1939.
Sleeping Princess. 1939.
WAR FILMS, SERIES 5.
Brade, Reginald H.
Destruction of a Fokker. © 1916.
Fight at St. Eloi. © 1916.
Observing for Our Heavy Guns. © 1916.
Scenes in and Around British Headquarters. © 1916.
Work of the Army Veterinary Corps at the Front. © 1916.
WARREN DOANE BREVITY.
Universal Pictures Corp.
Demi-Tasse. 1934.
Tid-Bits. 1934.
WARREN DOANE COMEDY.
Universal Pictures Corp.
Alias the Professor. 1933.
Boys Will Be Boys. 1932.
Family Troubles. 1932.
Finishing Touch. 1932.
Gleason's New Deal. 1933.
Hesitating Love. 1932.
His First Case. 1933.
Hunting Trouble. 1933.
Lights Out. 1932.
Mister Mugg. 1933.
Quiet Night. 1933.
Union Wages. 1932.
WASHINGTON PARADE.
Columbia Pictures Corp.
Library of Congress. 1939.
Smithsonian Institution. 1939.
Columbia Pictures Corp. of California, Ltd.
Inside the Capitol. 1939.
Inside the White House. 1939.
WESTERN FEATURETTE.
Universal Pictures Corp.
Bare Fists. 1927.
Battling Buckaroo. 1927.
Battling Justice. 1928.
Battling Kid. 1930.
Beyond the Smoke. 1929.
Blind Man's Bluff. 1927.
Boss of the Rancho. 1927.
Clearing the Trail. 1927.
Close Call. 1929.
Code of the Mounted. 1928.
Danger Ahead. 1927.
Danger Line. 1929.
Fighting Destiny. 1928.
Gauge of Battle. 1928.
Hidden Money. 1928.
In Line of Duty. 1929.
Kidnapped. 1929.
King of Hearts. 1927.
Law Rider. 1927.
Lone Ranger. 1927.
Looters. 1928.
Madden of the Mounted. 1928.
Pay Roll Round-up. 1928.
Perilous Paths. 1929.
Playing False. 1929.
Put 'Em Up. 1927.
Racing Wizard. 1927.
Red Warning. 1927.
Rider of the Sierras. 1929
Ridin' Leather. 1929.
Ridin' Wild. 1927.
Riding for Love. 1929.
Riding Gold. 1927.
Ring Leader. 1928.
Scrappin' Fool. 1927.
Sealed Orders. 1928.
Son of the Frontier. 1928.
Two Gun Morgan. 1929.
Untamed. 1928.
Winged Hoofs. 1928.
Wolf's Fangs. 1930.
Wolves of the Range. 1927.
WESTERN THRILL SERIES.
Universal Pictures Corp.
Harvest of Hate. 1928.
WESTWARD MOVEMENT.
Society for Visual Education, Inc.
Across the Rockies to the Pacific. 1921.
Breaking Through the Appalachian Barrier. 1920.
Louisiana Purchase and the Lewis and Clark Expedition. 1920.
Settling the Ohio Valley. 1920.
Trans-Mississippi Trails. 1921.
WHAT HAPPENED TO JANE SERIES.
Universal Pictures Corp.
Her Ambition. 1926.
Jane Missed Out. 1927.
Jane's Engagement Party. 1926.
Jane's Flirtation. 1926.
Jane's Honeymoons. 1926.
Jane's Hubby. 1927.
Jane's Inheritance. 1926.
Jane's Predicament. 1926.
Jane's Relations. 1927.
Jane's Sleuth. 1927.
Jane's Troubles. 1926.
Plain Jane. 1927.
Thanks for the Boat Ride. 1926.
WHIRLWIND COMEDY.
Bray Productions, Inc.
Bare Coed. 1927.
Barnyard Rivals. 1928.
Her Salty Suitor. 1928.
Iron Derby. 1927.
Naughty Nurse. 1928.
Smackem Alley. 1928.
When East Went West. 1927.
Wild Waves. 1928.
R-C Pictures Corp.
Egged On. 1926.
Wild Roomer. 1926.
WHOOPEE COMEDIES.
Pathe Exchange, Inc.
Big Hearted. 1930.
Eve's Fall. 1930.
Hold the Baby. 1930.
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

textbookfull.com

You might also like