Topic 12 Introduction to Recursion
"To a man with a hammer, everything looks like a nail"
- Mark Twain
"To a man with a hammer, everything looks like a nail" - - PowerPoint PPT Presentation
Topic 12 Introduction to Recursion "To a man with a hammer, everything looks like a nail" -Mark Twain Underneath the Hood. CS314 Recursion 2 The Program Stack When you invoke a method in your code what happens when that
CS314
Recursion
2
CS314
Recursion
3
CS314
Recursion
4
CS314
Recursion
5
6
CS314
Recursion
7
CS314
Recursion
8
CS314
Recursion
9
CS314
Recursion
10
CS314
Recursion
12
CS314
Recursion
13
CS314
Recursion
14
m1.txt m2.txt
a1.htm a2.htm a3.htm a4.htm
A.pdf AB.pdf
CS314
Recursion
15
CS314
Recursion
16
// pre: dir is a directory and dir != null public static long spaceUsed(File dir) { if( dir == null || !dir.isDirectory()) throw new IllegalArgumentException(); long spaceUsed = 0; File[] subFilesAndDirs = dir.listFiles(); if(subFilesAndDirs != null) for(File sub : subFilesAndDirs) if(sub != null) if(!sub.isDirectory()) // sub is a plain old file spaceUsed += sub.length(); else // else sub is a directory spaceUsed += spaceUsed(sub); return spaceUsed; }
CS314
Recursion
17
CS314
Recursion
18
public int getDirectorySpace(File d) { ArrayList<File> dirs = new ArrayList<>(); dirs.add(d); int total = 0; while( dirs.size() > 0 ) { File temp = dirs.remove(dirs.size() – 1); File[] filesAndSubs = temp.listFiles(); if (filesAndSubs != null) { for (File f : filesAndSubs) { if (f != null) { if (f.isFile()) total += f.length(); else dirs.add(f); } } } return total; }
CS314
Recursion
20
CS314
Recursion
21
CS314
Recursion
22
CS314
Recursion
23
CS314
Recursion
24
CS314
Recursion
25
CS314
Recursion
26
CS314
Recursion
27
CS314
Recursion
28
CS314
Recursion
29
CS314
Recursion
30
CS314
Recursion
31
CS314
Recursion
32
CS314
Recursion
33
CS314
Recursion
34
CS314
Recursion
36
CS314
Recursion
37
public static int fact(int n) { if (n == 0) { return 1; } else { return n * fact(n - 1); } }
38
CS314
Recursion
39
CS314
Recursion
40
CS314
Recursion
41
CS314
Recursion
42
CS314
Recursion
43
CS314
Recursion
44
CS314
Recursion
45
CS314
Recursion
46
CS314
Recursion
47
CS314
Recursion
48
CS314
Recursion
49
CS314
Recursion
50