Download presentation
Presentation is loading. Please wait.
1
CIT 383: Administrative Scripting
Recursion CIT 383: Administrative Scripting
2
CIT 383: Administrative Scripting
Topics What is recursion? Recursive definitions. Examples. Writing a recursive function. Recursion in system administration. CIT 383: Administrative Scripting
3
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
4
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
5
Recursive Definitions
integer COMMA LIST , ,8,97 integer COMMA LIST , ,97 integer COMMA LIST , integer 97 CIT 383: Administrative Scripting
6
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
7
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
8
Counting list elements
def count_list(list) if list.empty? else 1 + count_list(list[1..-1]) end CIT 383: Administrative Scripting
9
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
10
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
11
Writing a Recursive Function
Write the base case first. Recurse to a simpler case. Avoid using globals. CIT 383: Administrative Scripting
12
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
13
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
14
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
15
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.