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 lower-level 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 step-by-step 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 end-of-chapter 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
The Recursive Book of Recursion
Recursion has an intimidating reputation: it’s considered to be an advanced computer science topic frequently brought …
book
Java Coding Problems
Develop your coding skills by exploring Java concepts and techniques such as Strings, Objects and Types, …
book
Data Structures and Algorithms in Java, 2nd Edition
Data Structures and Algorithms in Java, Second Edition is designed to be easy to read and …
book
Data Structures and Algorithms in Java, 6th Edition
The design and analysis of efficient data structures has long been recognized as a key component …