Cargando…

Introduction to recursive programming /

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 numero...

Descripción completa

Detalles Bibliográficos
Clasificación:Libro Electrónico
Autor principal: Rubio-Sánchez, Manuel (Autor)
Formato: Electrónico eBook
Idioma:Inglés
Publicado: Boca Raton, FL : CRC Press, Taylor & Francis Group, [2018]
Temas:
Acceso en línea:Texto completo (Requiere registro previo con correo institucional)

MARC

LEADER 00000cam a2200000 i 4500
001 OR_on1042168442
003 OCoLC
005 20231017213018.0
006 m o d
007 cr unu||||||||
008 180628s2018 flua ob 001 0 eng d
040 |a UMI  |b eng  |e rda  |e pn  |c UMI  |d OCLCF  |d TOH  |d STF  |d DEBBG  |d CEF  |d CNCEN  |d G3B  |d S9I  |d UAB  |d AU@  |d TYFRS  |d RDF  |d SFB  |d OCLCQ  |d K6U  |d OCLCQ 
020 |a 9781315120850 
020 |a 1315120852 
020 |a 9781498735308 
020 |a 1498735304 
020 |a 9781351647175 
020 |a 1351647172 
020 |a 113810521X 
020 |a 9781138105218 
020 |a 1498735282 
020 |a 9781498735285 
020 |z 9781138105218 
020 |z 9781498735285 
035 |a (OCoLC)1042168442 
037 |a CL0500000975  |b Safari Books Online 
050 4 |a QA76.645 
082 0 4 |a 005.1  |2 23 
049 |a UAMI 
100 1 |a Rubio-Sánchez, Manuel,  |e author. 
245 1 0 |a Introduction to recursive programming /  |c Manuel Rubio-Sánchez. 
264 1 |a Boca Raton, FL :  |b CRC Press, Taylor & Francis Group,  |c [2018] 
264 4 |c ©2018 
300 |a 1 online resource (1 volume) :  |b illustrations 
336 |a text  |b txt  |2 rdacontent 
337 |a computer  |b c  |2 rdamedia 
338 |a online resource  |b cr  |2 rdacarrier 
347 |a data file 
588 0 |a Print version record. 
504 |a Includes bibliographical references and index. 
520 |a 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. 
505 0 0 |g Chapter 1  |t Basic concepts of recursive programming --  |g 1.1  |t Recognizing recursion --  |g 1.2  |t Problem decomposition --  |g 1.3  |t Recursive code --  |g 1.4  |t Induction --  |g 1.4.1  |t Mathematical proofs by induction --  |g 1.4.2  |t Recursive leap of faith --  |g 1.4.3  |t Imperative vs. declarative programming --  |g 1.5  |t Recursion vs. iteration --  |g 1.6  |t Types of recursion --  |g 1.6.1  |t Linear recursion --  |g 1.6.2  |t Tail recursion --  |g 1.6.3  |t Multiple recursion --  |g 1.6.4  |t Mutual recursion --  |g 1.6.5  |t Nested recursion --  |g 1.7  |t Exercises --  |g Chapter 2  |t Methodology for recursive thinking --  |g 2.1  |t Template for designing recursive algorithms --  |g 2.2  |t Size of the problem --  |g 2.3  |t Base cases --  |g 2.4  |t Problem decomposition --  |g 2.5  |t Recursive cases, induction, and diagrams --  |g 2.5.1  |t Thinking recursively through diagrams --  |g 2.5.2  |t Concrete instances --  |g 2.5.3  |t Alternative notations --  |g 2.5.4  |t Procedures --  |g 2.5.5  |t Several subproblems --  |g 2.6  |t Testing --  |g 2.7  |t Exercises --  |g Chapter 3  |t Runtime analysis of recursive algorithms --  |g 3.1  |t Mathematical preliminaries --  |g 3.1.1  |t Power and logarithms --  |g 3.1.2  |t Bionomial coefficients --  |g 3.1.3  |t Limits and L'Hopital's rules --  |g 3.1.4  |t Sums and products --  |g 3.1.5  |t Floors and ceilings --  |g 3.1.6  |t Trigonometry --  |g 3.1.7  |t Vectors and matrices --  |g 3.2  |t Computational time complexity --  |g 3.2.1  |t Order of growth of functions --  |g 3.2.2  |t Asymptotic notation --  |g 3.3  |t Recurrence relations --  |g 3.3.1  |t Expansion method --  |g 3.3.2  |t General method for solving difference equations --  |g 3.4  |t Exercises --  |g Chapter 4  |t Linear recursion I : basic algorithms --  |g 4.1  |t Arithmetic operations --  |g 4.1.1  |t Power function --  |g 4.1.2  |t Slow addition --  |g 4.1.3  |t Double sum --  |g 4.2  |t Basic conversion --  |g 4.2.1  |t Binary representation of a nonnegative integer --  |g 4.2.2  |t Decimal to base b conversion --  |g 4.3  |t Strings --  |g 4.3.1  |t Reversing a string --  |g 4.3.2  |t Is a string a palindrome? --  |g 4.4  |t Additional problems --  |g 4.4.1  |t Selection sort --  |g 4.4.2  |t Horner's method for evaluating polynomials --  |g 4.4.3  |t A row of Pascal's triangle --  |g 4.4.4  |t Ladder of resistors --  |g 4.5  |t Exercises --  |g Chapter 5  |t Linear recursion II : tail recursion --  |g 5.1  |t Boolean functions --  |g 5.1.1  |t Does a nonnegative integer contain a particular digit? --  |g 5.1.2  |t Equal strings? --  |g 5.2  |t Searching algorithms for lists --  |g 5.2.1  |t Linear search --  |g 5.2.2  |t Binary search in a sorted list --  |g 5.3  |t Binary search trees --  |g 5.3.1  |t Searching for an item --  |g 5.3.2  |t Inserting an item --  |g 5.4  |t Partitioning schemes --  |g 5.4.1  |t Basic partitioning scheme --  |g 5.4.2  |t Hoare's partitioning method --  |g 5.5  |t The quickselect algorithm --  |g 5.6  |t Bisection algorithm for root finding --  |g 5.7  |t The woodcutter problem --  |g 5.8  |t Euclid's algorithm --  |g 5.9  |t Exercises 
505 0 0 |g Chapter 6  |t Multiple recursion I : divide and conquer --  |g 6.1  |t Is a list sorted in ascending order? --  |g 6.2  |t Sorting --  |g 6.2.1  |t The merge sort algorithm --  |g 6.2.2  |t The quicksort algorithm --  |g 6.3  |t Majority element in a list --  |g 6.4  |t Fast integer multiplication --  |g 6.5  |t Matrix multiplication --  |g 6.5.1  |t Divide and conquer matrix multiplication --  |g 6.5.2  |t Strassen's matrix multiplication algorithm --  |g 6.6  |t The tromino tiling problem --  |g 6.7  |t The skyline problem --  |g 6.8  |t Exercises --  |g Chapter 7  |t Multiple recursion II : puzzles, fractals, and more ...  |g 7.1  |t Swamp traversal --  |g 7.2  |t Towers of Hanoi --  |g 7.3  |t Tree traversals --  |g 7.3.1  |t Inorder traveresal --  |g 7.3.2  |t Preorder and postorder traversals --  |g 7.4  |t Longest palindrome substring --  |g 7.5  |t Fractals --  |g 7.5.1  |t Koch snowflake --  |g 7.5.2  |t Sierpiński's carpet --  |g 7.6  |t Exercises --  |g Chapter 8  |t Counting problems --  |g 8.1  |t Permutations --  |g 8.2  |t Variations with repetition --  |g 8.3  |t Combinations --  |g 8.4  |t Staircase climbing --  |g 8.5  |t Manhattan paths --  |g 8.6  |t Convex polygon triangulations --  |g 8.7  |t Circle pyramids --  |g 8.8  |t Exercises --  |g Chapter 9  |t Mutual recursion --  |g 9.1  |t Parity of a number --  |g 9.2  |t Multiplayer games --  |g 9.3  |t Rabbit population growth --  |g 9.3.1  |t Adult and baby rabbit pairs --  |g 9.3.2  |t Rabbit family tree --  |g 9.4  |t Water treatment plants puzzle --  |g 9.4.1  |t Water flow between cities --  |g 9.4.2  |t Water discharge at each city --  |g 9.5  |t Cyclic towers of Hanoi --  |g 9.6  |t Grammars and recursive descent parsers --  |g 9.6.1  |t Tokenization of the input string --  |g 9.6.2  |t Recursive descent parser --  |g 9.7  |t Exercises --  |g Chapter 10  |t Program execution --  |t 10.1  |t Control flow between subroutines --  |g 10.2  |t Recursion trees --  |g 10.2.1  |t Runtime analysis --  |g 10.3  |t The program stack --  |g 10.3.1  |t Stack frames --  |g 10.3.2  |t Stack traces --  |g 10.3.3  |t Computational space complexity --  |g 10.3.4  |t Maximum recursion depth and stack overflow errors --  |g 10.3.5  |t Recursion as an alternative to a stack data structure --  |g 10.4  |t Memoization and dynamic programming --  |g 10.4.1  |t Memoization --  |g 10.4.2  |t Dependency graph and dynamic programming --  |g 10.5  |t Exercises --  |g Chapter 11  |t Tail recursion revisited and nested recursion --  |g 11.1  |t Tail recursion vs. iteration --  |g 11.2  |t Tail recursion by thinking iteratively --  |g 11.2.1  |t Factorial --  |g 11.2.2  |t Decimal to base b conversion --  |g 11.3  |t Nested recursion --  |g 11.3.1  |t The Ackermann function --  |g 11.3.2  |t The McCarthy 91 function --  |g 11.3.3  |t The digital root --  |g 11.4  |t Tail and nested recursion through function generalization --  |g 11.4.1  |t Factorial --  |g 11.4.2  |t Decimal to base b conversion --  |g 11.5  |t Exercises --  |g Chapter 12  |t Multiple recursion III : backtracking --  |g 12.1  |t Introduction --  |g 12.1.1  |t Partial and complete solutions --  |g 12.1.2  |t Recursive structure --  |g 12.2  |t Generating combinatorial entities --  |g 12.2.1  |t Subsets --  |g 12.2.2  |t Permutations --  |g 12.3  |t The N-Queens problem --  |g 12.3.1  |t Finding every solution --  |g 12.3.2  |t Finding one solution --  |g 12.4  |t Subset sum problem --  |g 12.5  |t Path through a maze --  |g 12.6  |t The sudoku puzzle --  |g 12.7  |t 0-1 knapsack problem --  |g 12.7.1  |t Standard backtracking algorithm --  |g 12.7.2  |t Branch and bound algorithm --  |g 12.8  |t Exercises. 
590 |a O'Reilly  |b O'Reilly Online Learning: Academic/Public Library Edition 
650 0 |a Recursive programming  |v Textbooks. 
650 0 |a Computer programming  |v Textbooks. 
650 0 |a Computer algorithms  |v Textbooks. 
650 7 |a Computer algorithms.  |2 fast  |0 (OCoLC)fst00872010 
650 7 |a Computer programming.  |2 fast  |0 (OCoLC)fst00872390 
650 7 |a Recursive programming.  |2 fast  |0 (OCoLC)fst01091987 
655 7 |a Textbooks.  |2 fast  |0 (OCoLC)fst01423863 
776 0 8 |i Print version:  |a Rubio Sánchez, Manuel.  |t Introduction to recursive programming.  |d Boca Raton, FL : CRC Press, Taylor & Francis Group, [2018]  |z 9781138105218  |w (DLC) 2017016319  |w (OCoLC)978858123 
856 4 0 |u https://learning.oreilly.com/library/view/~/9781351647175/?ar  |z Texto completo (Requiere registro previo con correo institucional) 
994 |a 92  |b IZTAP