Book description
Recursion is one of the most fundamental concepts in computer science and a key programming technique that allows computations to be carried out repeatedly. Despite the importance of recursion for algorithm design, most programming books do not cover the topic in detail, despite the fact that numerous computer programming professors and researchers in the field of computer science education agree that recursion is difficult for novice students.
Introduction to Recursive Programming provides a detailed and comprehensive introduction to recursion. This text will serve as a useful guide for anyone who wants to learn how to think and program recursively, by analyzing a wide variety of computational problems of diverse difficulty.
It contains specific chapters on the most common types of recursion (linear, tail, and multiple), as well as on algorithm design paradigms in which recursion is prevalent (divide and conquer, and backtracking). Therefore, it can be used in introductory programming courses, and in more advanced classes on algorithm design. The book also covers lowerlevel topics related to iteration and program execution, and includes a rich chapter on the theoretical analysis of the computational cost of recursive programs, offering readers the possibility to learn some basic mathematics along the way.
It also incorporates several elements aimed at helping students master the material. First, it contains a larger collection of simple problems in order to provide a solid foundation of the core concepts, before diving into more complex material. In addition, one of the book's main assets is the use of a stepbystep methodology, together with specially designed diagrams, for guiding and illustrating the process of developing recursive algorithms. Furthermore, the book covers combinatorial problems and mutual recursion. These topics can broaden students' understanding of recursion by forcing them to apply the learned concepts differently, or in a more sophisticated manner.
The code examples have been written in Python 3, but should be straightforward to understand for students with experience in other programming languages. Finally, worked out solutions to over 120 endofchapter exercises are available for instructors.
Table of contents
 Cover
 Half Title
 Title Page
 Copyright Page
 Table of Contents
 Preface
 List of Figures
 List of Tables
 List of Listings
 Chapter 1 ▪ Basic Concepts of Recursive Programming
 Chapter 2 ▪ Methodology for Recursive Thinking
 Chapter 3 ▪ Runtime Analysis of Recursive Algorithms
 Chapter 4 ▪ Linear Recursion I: Basic Algorithms
 Chapter 5 ▪ Linear Recursion II: Tail Recursion
 Chapter 6 ▪ Multiple Recursion I: Divide and Conquer
 Chapter 7 ▪ Multiple Recursion II: Puzzles, Fractals, and More...
 Chapter 8 ▪ Counting Problems

Chapter 9 ▪ Mutual Recursion
 9.1 Parity of a number
 9.2 Multiplayer games
 9.3 Rabbit population growth
 9.4 Water treatment plants puzzle
 9.5 Cyclic towers of Hanoi
 9.6 Grammars and recursive descent parsers
 9.7 Exercises
 Chapter 10 ▪ Program Execution
 10.1 Control flow between subroutines
 10.2 Recursion trees
 10.3 The program stack
 10.4 Memoization and dynamic programming
 10.5 Exercises
 Chapter 11 ▪ Tail Recursion Revisited and Nested Recursion
 Chapter 12 ▪ Multiple Recursion III: Backtracking
 Further reading
 Index
Product information
 Title: Introduction to Recursive Programming
 Author(s):
 Release date: October 2017
 Publisher(s): CRC Press
 ISBN: 9781351647175
You might also like
book
40 Algorithms Every Programmer Should Know
Learn algorithms for solving classic computer science problems with this concise guide covering everything from fundamental …
book
Data Structures and Algorithms in Python
Based on the authors' market leading data structures books in Java and C++, this textbook offers …
book
Essential Algorithms, 2nd Edition
A friendly introduction to the most useful algorithms written in simple, intuitive English The revised and …
book
Algorithms in a Nutshell, 2nd Edition
Creating robust software requires the use of efficient algorithms, but programmers seldom think about them until …