Skip to content

Commit cd24aaf

Browse files
committed
added recursion test
1 parent a3d1176 commit cd24aaf

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

testRecursion.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import random, timeit
1+
import random, timeit, sys
22

33
def getLine(syllablesRemaining, s):
44
while syllablesRemaining > 0:
@@ -9,13 +9,14 @@ def getLine(syllablesRemaining, s):
99
return s
1010

1111
def getLineRecursive(syllablesRemaining, s):
12-
s = ""
13-
while syllablesRemaining > 0:
12+
#base case
13+
if syllablesRemaining == 0:
14+
return
15+
else:
1416
toGet = random.randint(1,syllablesRemaining)
15-
syllablesRemaining -= toGet
1617
idx = random.randint(0,len(words[toGet])-1)
1718
s += words[toGet][idx]
18-
return s
19+
return getLineRecursive(syllablesRemaining - toGet, s)
1920

2021
fIn = open('HaikuSource.txt','r')
2122
lineNum = 186524
@@ -31,8 +32,12 @@ def getLineRecursive(syllablesRemaining, s):
3132
words[syllables-1].append(s)
3233

3334
#Timer for iterative solution
34-
iterative = timeit.Timer('getLine(syllables, s)', setup='syllables = 5; s = ""')#Yikes, semicolons!
35+
iterative = timeit.Timer('getLine(syllables, s)', setup='syllables = 5; s = ""; from __main__ import getLine')#Yikes, semicolons!
3536
#Timer for recursive solution
36-
recursive = timeit.Timer('getLineRecursive(syllables, s)', setup='syllables = 5; s = ""')
37-
37+
recursive = timeit.Timer('getLineRecursive(syllables, s)', setup='syllables = 5; s = ""; from __main__ import getLineRecursive')
3838

39+
#Default times to run is one million, that should suffice.
40+
sys.stdout.write("Iterative: ")
41+
print(iterative.timeit())
42+
sys.stdout.write("Recursive: ")
43+
print(recursive.timeit())

0 commit comments

Comments
 (0)