Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Introduction to recursive programming
Rubio-Sánchez M., CRC Press, Inc., Boca Raton, FL, 2018. 451 pp. Type: Book (978-1-498735-28-5)
Date Reviewed: Mar 20 2019

Self-directed action can challenge the notion of action and defy understanding. It can trap one in a disorienting hall of mirrors or in a contorted posture. Recursion, which employs a function that calls itself, is an example. It is as conceptually elegant as it is subtle and challenging. For these reasons, recursion has too often been relegated to cult status in computer science (CS), which has resulted in its minimization and marginalization in education.

This book enacts a corrective to the limited treatment of recursion in college textbooks. In detailing the subject, it makes a strong case for the centrality of recursion in CS education. It effectively demystifies the subject through a balanced exposition of narrative discussion and code samples. The book will enable many in the iterative world to become familiar with, and less fearful of, recursion. For those in the recursive universe, the book will solidify and amplify their understanding of this powerful method of thinking and programming.

The opening chapter provides an overview of the entire book. It discusses recognizing recursion, mathematical induction, and types of recursion (linear, tail, multiple, mutual, and nested), and compares recursion and iteration. Each topic receives fuller treatment as the book progresses. This chapter is especially careful to explain the thinking that undergirds recursion and to provide concrete examples of it outside of CS. The rest of the book carries project domesticating recursion forward with grace. As with every chapter, the first chapters end with exercises that balance focus on both proofs and applications. The exercises both reinforce activities detailed in the chapter and press the reader to deepen understanding with challenging tasks. They are a key component in understanding.

Before dealing with specific forms of recursion, such as linear recursion, the author devotes chapters to the methodology of recursion and to the runtime analysis of recursive algorithms. These chapters form a solid foundation for what follows. The first chapter in this sequence, because it presents a framework for implementing recursion, can serve as the basis for a recursive component to an introductory course in CS. The framework moves from determining the size of the problem to defining base cases, smaller components of the problem, and recursive cases, and culminating with testing code. The second chapter in the sequence starts with a presentation of the mathematics needed for what immediately follows: a treatment of runtime complexity. Both chapters prepare the reader for what follows.

The rest of the book devotes itself to major forms of recursion, with interludes on counting problems and program execution. The placement of these chapters modulates the pace of the book and relieves any tedium associated with multiple successive chapters on recursive forms. Linear recursion is covered in one chapter, while tail recursion, multiple recursion, and mutual recursion each receive treatment across multiple chapters. The most effective sections of these chapters present classic problems in CS, such as the knapsack problem, Manhattan paths, the towers of Hanoi, and navigating a maze. These supplement the more overtly mathematical problems, for example, evaluating polynomials, matrix multiplication, the Fibonacci sequence, and Euclid’s algorithm.

One of the strengths of the book is that its explanatory power is partly achieved through the accumulation of program examples. Although the language of exposition is Python, the code presented is easily understood and executed by readers more familiar with other imperative languages such as Java and C++.

Since the thrust of the book is pedagogical, its audience is students, primarily undergraduates, and teachers. The book is sufficiently detailed to provide material that spans at least one semester. The book itself is a masterpiece of pedagogy. It makes few assumptions about the background of the reader. For example, it provides detailed explanations of the mathematics that undergirds the discussion of recursion. These include a review of trigonometric functions, summation and product notation, recurrence relations, and conversions between bases. Also, its inclusion of graphical elements complements the narrative and aids visual thinkers.

More reviews about this item: Amazon

Reviewer:  Marlin Thomas Review #: CR146477 (1906-0211)
Bookmark and Share
  Featured Reviewer  
 
Recursion (D.3.3 ... )
 
Would you recommend this review?
yes
no
Other reviews under "Recursion": Date
Teaching strategies for reinforcing structural recursion with lists
Goldwasser M., Letscher D.  Object oriented programming systems and applications companion (Companion to the 22nd ACM SIGPLAN Conference on Object Oriented Programming Systems and Applications, Montreal, Quebec, Canada, Oct 21-25, 2007)889-896, 2007. Type: Proceedings
Mar 5 2008

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud, Inc.®
Terms of Use
| Privacy Policy