Recursion: How It Works
7 January 2019 OSU CSE 1
Recursion: How It Works 7 January 2019 OSU CSE 1 Question - - PowerPoint PPT Presentation
Recursion: How It Works 7 January 2019 OSU CSE 1 Question Considered Before How should you think about recursion so you can use it to develop elegant recursive methods to solve certain problems? Answer : Pretend there is a FreeLunch
7 January 2019 OSU CSE 1
7 January 2019 OSU CSE 2
7 January 2019 OSU CSE 3
7 January 2019 OSU CSE 4
7 January 2019 OSU CSE 5
7 January 2019 OSU CSE 6
7 January 2019 OSU CSE 7
private static String reversedString(String s) {
}
7 January 2019 OSU CSE 8
7 January 2019 OSU CSE 9
s = "OSU" if (s.length() == 0) { ... } else { s = "OSU" String sub = s.substring(1); s = "OSU" sub = "SU" String rSub = reversedString(sub); return rSub + s.charAt(0);
7 January 2019 OSU CSE 10
s = "OSU" if (s.length() == 0) { ... } else { s = "OSU" String sub = s.substring(1); s = "OSU" sub = "SU" String rSub = reversedString(sub); return rSub + s.charAt(0);
7 January 2019 OSU CSE 11
s = "OSU" if (s.length() == 0) { ... } else { s = "OSU" String sub = s.substring(1); s = "OSU" sub = "SU" String rSub = reversedString(sub); return rSub + s.charAt(0);
7 January 2019 OSU CSE 12
7 January 2019 OSU CSE 13
7 January 2019 OSU CSE 14
s = "OSU" if (s.length() == 0) { ... } else { String sub = s.substring(1); String rSub = reversedString(sub); return rSub + s.charAt(0);
7 January 2019 OSU CSE 15
s = "OSU" if (s.length() == 0) { ... } else { String sub = s.substring(1); String rSub = reversedString(sub); return rSub + s.charAt(0);
7 January 2019 OSU CSE 16
s = "OSU" if (s.length() == 0) { ... } else { String sub = s.substring(1); String rSub = reversedString(sub); return rSub + s.charAt(0);
7 January 2019 OSU CSE 17
7 January 2019 OSU CSE 18
this = "OSU" /* * Body for length method * from class String; we * do not have this, so how * do we know what it does? * We look at its contract! * When it finishes, we know * it has not changed this * (it could not even if it * wanted to), and it returns * the length of this. */ this = "OSU" length = 3
7 January 2019 OSU CSE 19
7 January 2019 OSU CSE 20
this = "OSU" /* * Body for length method * from class String; we * do not have this, so how * do we know what it does? * We look at its contract! * When it finishes executing * it has not changed this * (it could not even if it * wanted to), and it returns * the length of this */ this = "OSU" length = 3
7 January 2019 OSU CSE 21
7 January 2019 OSU CSE 22
s = "OSU" if (s.length() == 0) { ... } else { String sub = s.substring(1); String rSub = reversedString(sub); return rSub + s.charAt(0);
7 January 2019 OSU CSE 23
s = "OSU" if (s.length() == 0) { ... } else { s = "OSU" String sub = s.substring(1); String rSub = reversedString(sub); return rSub + s.charAt(0);
7 January 2019 OSU CSE 24
s = "OSU" if (s.length() == 0) { ... } else { s = "OSU" String sub = s.substring(1); s = "OSU" sub = "SU" String rSub = reversedString(sub); return rSub + s.charAt(0);
7 January 2019 OSU CSE 25
s = "OSU" if (s.length() == 0) { ... } else { s = "OSU" String sub = s.substring(1); s = "OSU" sub = "SU" String rSub = reversedString(sub); return rSub + s.charAt(0);
7 January 2019 OSU CSE 26
7 January 2019 OSU CSE 27
s = "SU" if (s.length() == 0) { ... } else { String sub = s.substring(1); String rSub = reversedString(sub); return rSub + s.charAt(0);
7 January 2019 OSU CSE 28
s = "SU" if (s.length() == 0) { ... } else { String sub = s.substring(1); String rSub = reversedString(sub); return rSub + s.charAt(0);
7 January 2019 OSU CSE 29
s = "SU" if (s.length() == 0) { ... } else { s = "SU" String sub = s.substring(1); s = "SU" sub = "U" String rSub = reversedString(sub); return rSub + s.charAt(0);
7 January 2019 OSU CSE 30
7 January 2019 OSU CSE 31
s = "U" if (s.length() == 0) { ... } else { String sub = s.substring(1); String rSub = reversedString(sub); return rSub + s.charAt(0);
7 January 2019 OSU CSE 32
s = "U" if (s.length() == 0) { ... } else { String sub = s.substring(1); String rSub = reversedString(sub); return rSub + s.charAt(0);
7 January 2019 OSU CSE 33
s = "U" if (s.length() == 0) { ... } else { s = "U" String sub = s.substring(1); s = "U" sub = "" String rSub = reversedString(sub); return rSub + s.charAt(0);
7 January 2019 OSU CSE 34
7 January 2019 OSU CSE 35
s = "" if (s.length() == 0) { return s;
7 January 2019 OSU CSE 36
s = "" if (s.length() == 0) { return s;
7 January 2019 OSU CSE 37
s = "" if (s.length() == 0) { s = "" return s;
7 January 2019 OSU CSE 38
7 January 2019 OSU CSE 39
s = "U" if (s.length() == 0) { ... } else { s = "U" String sub = s.substring(1); s = "U" sub = "" String rSub = reversedString(sub); return rSub + s.charAt(0);
7 January 2019 OSU CSE 40
s = "U" if (s.length() == 0) { ... } else { s = "U" String sub = s.substring(1); s = "U" sub = "" String rSub = reversedString(sub); s = "U" sub = "" rSub = "" return rSub + s.charAt(0);
7 January 2019 OSU CSE 41
7 January 2019 OSU CSE 42
s = "SU" if (s.length() == 0) { ... } else { s = "SU" String sub = s.substring(1); s = "SU" sub = "U" String rSub = reversedString(sub); return rSub + s.charAt(0);
7 January 2019 OSU CSE 43
s = "SU" if (s.length() == 0) { ... } else { s = "SU" String sub = s.substring(1); s = "SU" sub = "U" String rSub = reversedString(sub); s = "SU" sub = "U" rSub = "U" return rSub + s.charAt(0);
7 January 2019 OSU CSE 44
7 January 2019 OSU CSE 45
s = "OSU" if (s.length() == 0) { ... } else { s = "OSU" String sub = s.substring(1); s = "OSU" sub = "SU" String rSub = reversedString(sub); return rSub + s.charAt(0);
7 January 2019 OSU CSE 46
s = "OSU" if (s.length() == 0) { ... } else { s = "OSU" String sub = s.substring(1); s = "OSU" sub = "SU" String rSub = reversedString(sub); s = "OSU" sub = "SU" rSub = "US" return rSub + s.charAt(0);
7 January 2019 OSU CSE 47
7 January 2019 OSU CSE 48
7 January 2019 OSU CSE 49
7 January 2019 OSU CSE 50