CIT 383: Administrative Scripting

Slides:



Advertisements
Similar presentations
Chapter 13 Recursion. Copyright © 2006 Pearson Addison-Wesley. All rights reserved Learning Objectives Recursive void Functions Tracing recursive.
Advertisements

16-Jun-15 Recursion. 2 Definitions I A recursive definition is a definition in which the thing being defined occurs as part of its own definition Example:
28-Jun-15 Recursion. 2 Definitions I A recursive definition is a definition in which the thing being defined occurs as part of its own definition Example:
29-Jun-15 Recursion. 2 Definitions I A recursive definition is a definition in which the thing being defined occurs as part of its own definition Example:
Recursion. Definitions I A recursive definition is a definition in which the thing being defined occurs as part of its own definition Example: A list.
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting RSS.
CHAPTER 10 Recursion. 2 Recursive Thinking Recursion is a programming technique in which a method can call itself to solve a problem A recursive definition.
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting XML.
Recursion. Basic problem solving technique is to divide a problem into smaller sub problems These sub problems may also be divided into smaller sub problems.
CIT 383: Administrative Scripting
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting Writing Methods.
Instructor: Alexander Stoytchev CprE 185: Intro to Problem Solving (using C)
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting Methods and Hashes.
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting Introduction.
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting Regular Expressions.
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting HTTP.
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting Numbers.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 12 Recursion.
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting Directories.
CIT 383: Administrative Scripting
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting DateTime.
Introduction to information systems RUBY dr inż. Tomasz Pieciukiewicz.
Recursion. Definitions I A recursive definition is a definition in which the thing being defined occurs as part of its own definition Example: A list.
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting Commands.
Recursion Chapter 10 Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved X.
Recursion Chapter 10 Slides by Steve Armstrong LeTourneau University Longview, TX  2007,  Prentice Hall.
Recursion.
Recursion.
Recursion Recursion is a fundamental programming technique that can provide an elegant solution certain kinds of problems © 2004 Pearson Addison-Wesley.
Recursion Topic 5.
CprE 185: Intro to Problem Solving (using C)
Abdulmotaleb El Saddik University of Ottawa
CIT 383: Administrative Scripting
CMSC201 Computer Science I for Majors Lecture 18 – Recursion
CIT 383: Administrative Scripting
Programming in Java: lecture 10
Recursive Thinking Chapter 9 introduces the technique of recursive programming. As you have seen, recursive programming involves spotting smaller occurrences.
Chapter 8: Recursion Java Software Solutions
CIT 383: Administrative Scripting
And now for something completely different . . .
Recursive Thinking Chapter 9 introduces the technique of recursive programming. As you have seen, recursive programming involves spotting smaller occurrences.
Recursion 12-Nov-18.
CMSC201 Computer Science I for Majors Lecture 16 – Recursion
CIT 383: Administrative Scripting
Recursive Definitions
CIT 383: Administrative Scripting
Recursion (part 2) October 26, 2007 ComS 207: Programming I (in Java)
Chapter 8: Recursion Java Software Solutions
CIT 383: Administrative Scripting
Recursion 2-Dec-18.
Recursion 2-Dec-18.
CMSC201 Computer Science I for Majors Lecture 19 – Recursion
Recursion 29-Dec-18.
Coding Concepts (Basics)
Recursion (part 1) October 24, 2007 ComS 207: Programming I (in Java)
CIT 383: Administrative Scripting
Chapter 11 Recursion.
CIT 383: Administrative Scripting
Chapter 8: Recursion Java Software Solutions
11 Recursion Software Solutions Lewis & Loftus java 5TH EDITION
CIT 383: Administrative Scripting
CIT 383: Administrative Scripting
Recursion 23-Apr-19.
CIT 383: Administrative Scripting
Recursion (part 2) March 22, 2006 ComS 207: Programming I (in Java)
Chapter 3 :Recursion © 2011 Pearson Addison-Wesley. All rights reserved.
CIT 383: Administrative Scripting
Chapter 13 Recursion Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
Java Software Solutions Foundations of Program Design Sixth Edition
Recursion (part 1) October 25, 2006 ComS 207: Programming I (in Java)
Presentation transcript:

CIT 383: Administrative Scripting Recursion CIT 383: Administrative Scripting

CIT 383: Administrative Scripting Topics What is recursion? Recursive definitions. Examples. Writing a recursive function. Recursion in system administration. CIT 383: Administrative Scripting

CIT 383: Administrative Scripting Recursion Recursion is a programming technique in which a function calls itself. A recursive function must have both A base case in which the function computes a result without calling itself. One or more recursive cases where the function calls itself to compute the result. CIT 383: Administrative Scripting

Recursive Definitions How would you define a list of integers? 17, 42, 8, 97 We could define it by A LIST is an: integer or an: integer COMMA LIST We defined a LIST using itself. CIT 383: Administrative Scripting

Recursive Definitions integer COMMA LIST 17 , 42,8,97 integer COMMA LIST 42 , 8,97 integer COMMA LIST 8 , 97 integer 97 CIT 383: Administrative Scripting

Recursive Definitions The sum of the numbers 1 .. n is sum(1..n) is: n + sum(1..n-1) or: 1 if n is1 Ruby code: def sum(n) if n==1 1 else n + sum(n-1) end CIT 383: Administrative Scripting

CIT 383: Administrative Scripting sum(5) 5 sum sum(4) 4 sum sum(3) 3 sum sum(2) 2 sum sum(1) 1 sum CIT 383: Administrative Scripting

Counting list elements def count_list(list) if list.empty? else 1 + count_list(list[1..-1]) end CIT 383: Administrative Scripting

CIT 383: Administrative Scripting count_list([17, 42, 8, 97]) 4 count_list count_list([42, 8, 97]) 3 count_list count_list([8, 97]) 2 count_list count_list([8]) 1 count_list count_list() count_list CIT 383: Administrative Scripting

CIT 383: Administrative Scripting Adding list elements def sum_list(list) if list.empty? else list[0] + sum_list(list[1..-1]) end CIT 383: Administrative Scripting

Writing a Recursive Function Write the base case first. Recurse to a simpler case. Avoid using globals. CIT 383: Administrative Scripting

Write the base case first Every recursive function must have something it can do without recursion. There may be one or more base cases. Integers: base case usually occurs for 0 or 1 Arrays: base case usually occurs for [] Writing a base case is writing ordinary, non- recursive code. CIT 383: Administrative Scripting

Recurse to a simpler case Break recursive case into two parts A simpler problem (using a shorter array or smaller integer) of the same kind. Extra work done by the recursive case. Combine the results of the recursive work on the simpler problem and the extra work into a single solution. CIT 383: Administrative Scripting

Recursion in System Administration Searching the filesystem Examples: find file that matches string or filename Base cases: files Recursive cases: directories Spidering a web site Examples: check for broken links, archiving Base cases: documents Recursive cases: hyperlinks CIT 383: Administrative Scripting

CIT 383: Administrative Scripting References Michael Fitzgerald, Learning Ruby, O’Reilly, 2008. David Flanagan and Yukihiro Matsumoto, The Ruby Programming Language, O’Reilly, 2008. Hal Fulton, The Ruby Way, 2nd edition, Addison-Wesley, 2007. Dave Thomas with Chad Fowler and Andy Hunt, Programming Ruby, 2nd edition, Pragmatic Programmers, 2005. CIT 383: Administrative Scripting