![Page 1: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/1.jpg)
Collections, Part Four
![Page 2: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/2.jpg)
Announcements● Remember to send the introductory
email from assignment 1 and cc me.● I'm reading all the emails and the
introductory information is very important to me (in particular when it can help me be a more effective teacher)
● No lecture or section tomorrow● Wednesday and Friday sections still
happening● Please go to or watch the SCPD section if
you're in a Thursday section
![Page 3: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/3.jpg)
From the Last 3 Lectures...● Stack: Ordered sequence of data, access
from top● Vector: Ordered sequence of data
● Grid: 2D Ordered sequence of data
● Lexicon: Large, unordered container of strings that doesn't change over time
● Set: Unordered container of distinct elements
● Map: Unordered container of key-value pairs. Keys are distinct
![Page 4: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/4.jpg)
Queue
![Page 5: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/5.jpg)
Queue
● A Queue is a data structure representing a waiting line.
● Objects can be enqueued to the back of the line or dequeued from the front of the line.
● No other objects in the queue are visible.● Example: A checkout counter.
137
![Page 6: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/6.jpg)
Queue
● A Queue is a data structure representing a waiting line.
● Objects can be enqueued to the back of the line or dequeued from the front of the line.
● No other objects in the queue are visible.● Example: A checkout counter.
137 42
![Page 7: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/7.jpg)
Queue
● A Queue is a data structure representing a waiting line.
● Objects can be enqueued to the back of the line or dequeued from the front of the line.
● No other objects in the queue are visible.● Example: A checkout counter.
137 42 271
![Page 8: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/8.jpg)
Queue
● A Queue is a data structure representing a waiting line.
● Objects can be enqueued to the back of the line or dequeued from the front of the line.
● No other objects in the queue are visible.● Example: A checkout counter.
42 271
![Page 9: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/9.jpg)
Queue
● A Queue is a data structure representing a waiting line.
● Objects can be enqueued to the back of the line or dequeued from the front of the line.
● No other objects in the queue are visible.● Example: A checkout counter.
42 271 314
![Page 10: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/10.jpg)
Queue
● A Queue is a data structure representing a waiting line.
● Objects can be enqueued to the back of the line or dequeued from the front of the line.
● No other objects in the queue are visible.● Example: A checkout counter.
271 314
![Page 11: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/11.jpg)
Queue
● A Queue is a data structure representing a waiting line.
● Objects can be enqueued to the back of the line or dequeued from the front of the line.
● No other objects in the queue are visible.● Example: A checkout counter.
314
![Page 12: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/12.jpg)
Listing All Strings
● Suppose we want to generate all strings of letters A and B of length at most three.
● How might we do this?
![Page 13: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/13.jpg)
"" "A" "B" "AA" "AB" "BA" "BB"
![Page 14: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/14.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
![Page 15: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/15.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
![Page 16: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/16.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
![Page 17: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/17.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
""
![Page 18: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/18.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
""
![Page 19: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/19.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
""
![Page 20: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/20.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"" "A" "B"
![Page 21: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/21.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"A" "B"
![Page 22: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/22.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"A"
"B"
![Page 23: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/23.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"A"
"B"
![Page 24: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/24.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"A"
"B"
"AA" "AB"
![Page 25: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/25.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"B" "AA" "AB"
![Page 26: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/26.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"B"
"AA" "AB"
![Page 27: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/27.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"B"
"AA" "AB"
![Page 28: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/28.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"B"
"AA" "AB"
"BA" "BB"
![Page 29: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/29.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"AA" "AB" "BA" "BB"
![Page 30: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/30.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"AA"
"AB" "BA" "BB"
![Page 31: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/31.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"AA"
"AB" "BA" "BB"
![Page 32: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/32.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"AB" "BA" "BB"
![Page 33: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/33.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"AB"
"BA" "BB"
![Page 34: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/34.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"AB"
"BA" "BB"
![Page 35: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/35.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"BA" "BB"
![Page 36: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/36.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"BA"
"BB"
![Page 37: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/37.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"BA"
"BB"
![Page 38: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/38.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"BB"
![Page 39: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/39.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"BB"
![Page 40: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/40.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
"BB"
![Page 41: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/41.jpg)
""
"A" "B"
"AA" "AB" "BA" "BB"
![Page 42: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/42.jpg)
Listing All Strings
● Using a Queue we can list all strings of length less than 3 in order of string length!● Keep this in mind moving forward.
![Page 43: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/43.jpg)
Application: Cracking Passwords
![Page 44: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/44.jpg)
Disclaimer
● I am not trying to teach you how to hack into computer systems!
● This lecture explores techniques for attacking password systems.
● My intent is to help you better understand computer security and to motivate the techniques from the next section of CS106B.
● Do not use these techniques offensively! It is illegal!
![Page 45: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/45.jpg)
The Setup
● Suppose that you have a mystery function
bool login(string& username, string& password);
● This function takes in a username and password, then tells you whether it is correct.
● Suppose that you know someone's username. How might you break in to their account?
![Page 46: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/46.jpg)
A Brute-Force Attack
● Idea: Try logging in with all possible passwords!● Try logging in with all strings of length 0,
then all strings of length 1, then all strings of length 2, …
● Eventually, this will indeed crack the password.
● What would this look like in code?● How fast will it be?
![Page 47: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/47.jpg)
all-strings(Pseudocode)
![Page 48: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/48.jpg)
all-strings.cpp(Computer)
![Page 49: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/49.jpg)
Why Brute-Forcing is Hard
![Page 50: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/50.jpg)
Analyzing Efficiency
● How long will it take for our program to crack a password?
● Let's make the following assumptions:● The password consists purely of lowercase letters.● The password has length at most n.
● There are 26k possible lowercase strings of length k.
● Might have to try all strings of length 0, 1, …, n.
● To break the password, we need to try at most
different strings.
1+26+262+263
+264+...+26n=
26n+1−125
![Page 51: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/51.jpg)
How Many Strings?
● If n = 0, might have to try 1 string.
● If n = 1, might have to try 27 strings.
● If n = 2, might have to try 703 strings.
● If n = 3, might have to try 18,279 strings.
● …
● If n = 8, might have to try 217,180,147,159 strings.
● …
● If n = 15, might have to try 1,744,349,715,977,154,962,391 strings.
![Page 52: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/52.jpg)
Memory Usage""
"A" "B"
"AA" "AB" "BA" "BB"
"AAA" "AAB" "ABA" "ABB" "BAA" "BAB" "BBA" "BBB"
![Page 53: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/53.jpg)
Memory Usage""
"A" "B"
"AA" "AB" "BA" "BB"
"AAA" "AAB" "ABA" "ABB" "BAA" "BAB" "BBA" "BBB"
![Page 54: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/54.jpg)
Memory Usage""
"A" "B"
"AA" "AB" "BA" "BB"
"AAA" "AAB" "ABA" "ABB" "BAA" "BAB" "BBA" "BBB"
""
![Page 55: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/55.jpg)
Memory Usage""
"A" "B"
"AA" "AB" "BA" "BB"
"AAA" "AAB" "ABA" "ABB" "BAA" "BAB" "BBA" "BBB"
"A" "B"
![Page 56: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/56.jpg)
Memory Usage""
"A" "B"
"AA" "AB" "BA" "BB"
"AAA" "AAB" "ABA" "ABB" "BAA" "BAB" "BBA" "BBB"
"AA" "AB" "BA" "BB"
![Page 57: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/57.jpg)
Memory Usage""
"A" "B"
"AA" "AB" "BA" "BB"
"AAA" "AAB" "ABA" "ABB" "BAA" "BAB" "BBA" "BBB"
"AAA""AAB""ABA""ABB""BAA""BAB""BBA""BBB"
![Page 58: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/58.jpg)
Memory Usage
● Our current brute-force attack requires us to have about 26n strings in memory when attacking a password of length n.
● When n gets large, this is an enormous amount of memory.
● On a computer with only 4GB or 8GB of memory, we might run out of memory trying to do a brute-force attack!
![Page 59: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/59.jpg)
A Recursive Approach
""
"A" "B"
"AA" "AB" "BA" "BB"
"AAA" "AAB" "ABA" "ABB" "BAA" "BAB" "BBA" "BBB""BBB"
![Page 60: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/60.jpg)
A Recursive Approach
""
"A" "B"
"AA" "AB" "BA" "BB"
"AAA" "AAB" "ABA" "ABB" "BAA" "BAB" "BBA" "BBB""BBB"
![Page 61: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/61.jpg)
A Recursive Approach
""
"A" "B"
"AA" "AB" "BA" "BB"
"AAA" "AAB" "ABA" "ABB" "BAA" "BAB" "BBA" "BBB""BBB"
![Page 62: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/62.jpg)
A Recursive Approach
""
"A" "B"
"AA" "AB" "BA" "BB"
"AAA" "AAB" "ABA" "ABB" "BAA" "BAB" "BBA" "BBB""BBB"
![Page 63: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/63.jpg)
recursive-search(Pseudocode)
![Page 64: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/64.jpg)
recursive-search.cpp(Computer)
![Page 65: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/65.jpg)
A Recursive Approach
![Page 66: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/66.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"" maxLengthsoFar
![Page 67: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/67.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"" maxLengthsoFar
![Page 68: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/68.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"" maxLengthsoFar
""
![Page 69: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/69.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"" maxLengthsoFar
""
![Page 70: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/70.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"" maxLengthsoFar
""
![Page 71: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/71.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"" maxLengthsoFar
""
![Page 72: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/72.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"A" maxLengthsoFar
""
![Page 73: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/73.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"A" maxLengthsoFar
""
![Page 74: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/74.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"A" maxLengthsoFar
""
"A"
![Page 75: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/75.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"A" maxLengthsoFar
""
"A"
![Page 76: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/76.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"A" maxLengthsoFar
""
"A"
![Page 77: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/77.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"A" maxLengthsoFar
""
"A"
![Page 78: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/78.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AA" maxLengthsoFar
""
"A"
![Page 79: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/79.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AA" maxLengthsoFar
""
"A"
![Page 80: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/80.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AA" maxLengthsoFar
""
"A"
"AA"
![Page 81: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/81.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AA" maxLengthsoFar
""
"A"
"AA"
![Page 82: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/82.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AA" maxLengthsoFar
""
"A"
"AA"
![Page 83: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/83.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AA" maxLengthsoFar
""
"A"
"AA"
![Page 84: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/84.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AA" maxLengthsoFar
""
"A"
"AA"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AAA" maxLengthsoFar
![Page 85: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/85.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AA" maxLengthsoFar
""
"A"
"AA"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AAA" maxLengthsoFar
![Page 86: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/86.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AA" maxLengthsoFar
""
"A"
"AA"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AAA" maxLengthsoFar
"AAA"
![Page 87: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/87.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AA" maxLengthsoFar
""
"A"
"AA"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AAA" maxLengthsoFar
"AAA"
![Page 88: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/88.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AA" maxLengthsoFar
""
"A"
"AA"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AAA" maxLengthsoFar
"AAA"
![Page 89: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/89.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AA" maxLengthsoFar
""
"A"
"AA"
"AAA"
![Page 90: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/90.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AA" maxLengthsoFar
""
"A"
"AA"
"AAA"
![Page 91: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/91.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AA" maxLengthsoFar
""
"A"
"AA"
"AAA"
![Page 92: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/92.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AA" maxLengthsoFar
""
"A"
"AA"
"AAA"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AAB" maxLengthsoFar
![Page 93: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/93.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AA" maxLengthsoFar
""
"A"
"AA"
"AAA"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AAB" maxLengthsoFar
![Page 94: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/94.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AA" maxLengthsoFar
""
"A"
"AA"
"AAA"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AAB" maxLengthsoFar
"AAB"
![Page 95: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/95.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AA" maxLengthsoFar
""
"A"
"AA"
"AAA"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AAB" maxLengthsoFar
"AAB"
![Page 96: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/96.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AA" maxLengthsoFar
""
"A"
"AA"
"AAA"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AAB" maxLengthsoFar
"AAB"
![Page 97: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/97.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AA" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
![Page 98: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/98.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AA" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
![Page 99: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/99.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AA" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
![Page 100: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/100.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
![Page 101: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/101.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
![Page 102: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/102.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
![Page 103: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/103.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AB" maxLengthsoFar
![Page 104: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/104.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AB" maxLengthsoFar
![Page 105: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/105.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AB" maxLengthsoFar
"AB"
![Page 106: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/106.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AB" maxLengthsoFar
"AB"
![Page 107: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/107.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AB" maxLengthsoFar
"AB"
![Page 108: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/108.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AB" maxLengthsoFar
"AB"
![Page 109: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/109.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AB" maxLengthsoFar
"AB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"ABA" maxLengthsoFar
![Page 110: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/110.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AB" maxLengthsoFar
"AB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"ABA" maxLengthsoFar
![Page 111: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/111.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AB" maxLengthsoFar
"AB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"ABA" maxLengthsoFar
"ABA"
![Page 112: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/112.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AB" maxLengthsoFar
"AB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"ABA" maxLengthsoFar
"ABA"
![Page 113: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/113.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AB" maxLengthsoFar
"AB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"ABA" maxLengthsoFar
"ABA"
![Page 114: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/114.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AB" maxLengthsoFar
"AB"
"ABA"
![Page 115: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/115.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AB" maxLengthsoFar
"AB"
"ABA"
![Page 116: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/116.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AB" maxLengthsoFar
"AB"
"ABA"
![Page 117: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/117.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AB" maxLengthsoFar
"AB"
"ABA"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"ABB" maxLengthsoFar
![Page 118: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/118.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AB" maxLengthsoFar
"AB"
"ABA"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"ABB" maxLengthsoFar
![Page 119: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/119.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AB" maxLengthsoFar
"AB"
"ABA"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"ABB" maxLengthsoFar
"ABB"
![Page 120: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/120.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AB" maxLengthsoFar
"AB"
"ABA"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"ABB" maxLengthsoFar
"ABB"
![Page 121: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/121.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AB" maxLengthsoFar
"AB"
"ABA"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"ABB" maxLengthsoFar
"ABB"
![Page 122: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/122.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AB" maxLengthsoFar
"AB"
"ABA" "ABB"
![Page 123: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/123.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AB" maxLengthsoFar
"AB"
"ABA" "ABB"
![Page 124: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/124.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"AB" maxLengthsoFar
"AB"
"ABA" "ABB"
![Page 125: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/125.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
"AB"
"ABA" "ABB"
![Page 126: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/126.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
"AB"
"ABA" "ABB"
![Page 127: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/127.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
"AB"
"ABA" "ABB"
![Page 128: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/128.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
"AB"
"ABA" "ABB"
![Page 129: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/129.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
"AB"
"ABA" "ABB"
![Page 130: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/130.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
"AB"
"ABA" "ABB"
![Page 131: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/131.jpg)
A Recursive Approachvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
"AB"
"ABA" "ABB"
...
![Page 132: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/132.jpg)
Why This Matters
![Page 133: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/133.jpg)
Why This Mattersvoid generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"" maxLengthsoFar
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"A" maxLengthsoFar
""
"A"
"AA"
"AAA" "AAB"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(length, soFar + ch);
}
}
}3"AB" maxLengthsoFar
"AB"
"ABA"
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}
void generate(string soFar, int maxLength) {
doSomethingWith(soFar);
if (soFar.length() < maxLength) {
for (char ch = 'A'; ch <= 'B'; ch++) {
generate(soFar + ch, maxLength);
}
}
}3"ABB" maxLengthsoFar
"ABB"
![Page 134: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/134.jpg)
A Comparison
● Queue-based approach:
● Time: ≈26n+1
● Space: ≈26n+1
● This algorithm is called breadth-first search (or just BFS).
● Although less useful here, BFS has many applications; you'll see one in Assignment 2.
● Recursive approach:● Time: ≈26n+1
● Space: ≈n● This algorithm is called
depth-first search (or just DFS).
● Also quite useful; we'll see more applications later on.
![Page 135: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/135.jpg)
A Comparison
● Why would we ever use the Queue-based approach
● Remember the Queue approach visits strings in order of length
● What if there are multiple answers to a question, and we want to find the shortest?
– This is what you'll be doing for Assignment 2● What if know ahead of time that shorter
answers are more likely?
![Page 136: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/136.jpg)
Dictionary Attacks
● Passwords are not random strings; people often use
● words from the dictionary,● simple combinations of numbers,● their birthdays,● etc.
● A dictionary attack is an attack on a password system in which the attacker runs through a list of likely password candidates to try to break in.
● Watch how easy this is...
![Page 137: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/137.jpg)
dictionary-attack.cpp(Computer)
![Page 138: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/138.jpg)
Vector or Queue?
● Similar to the Stack, anytime we use a Queue we can use a Vector instead.
● What are the advantages of using a Queue instead of a Vector?
● We have the same two advantages as the Stack:● Easier to read● Protects against programmer mistakes
● Surprisingly, Queues also have a speed advantage
![Page 139: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/139.jpg)
queue-speed-test.cpp
![Page 140: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/140.jpg)
Vector or Queue?
● Why is the Queue so much faster?● Intuition: When removing to the beginning of
the Vector all the existing elements need to “slide over”
● Somehow the Queue doesn't do this. We'll find out how in a couple weeks.
![Page 141: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/141.jpg)
Password.txt
● Hey Aubrey, isn't storing a bunch of passwords in a text file kinda unsafe?● It's extremely unsafe.● In a couple weeks we'll cover a technique
that allows us to store passwords in a much more safe manner.
![Page 142: Collections, Part Fourweb.stanford.edu/class/archive/cs/cs106b/cs106b.1138/lectures/06/... · Announcements Remember to send the introductory email from assignment 1 and cc me. I'm](https://reader034.vdocument.in/reader034/viewer/2022042218/5ec4ad373b627b0e90351eae/html5/thumbnails/142.jpg)
Next Time
● Thinking Recursively● How can you best solve problems using
recursion?● What techniques are necessary to do so?● And what problems yield easily to a
recursive solution?