Skip to content
Snippets Groups Projects
Commit 764ef2b7 authored by Chris Bohn's avatar Chris Bohn
Browse files

Initial commit of files supporting mutual recursion and tail recursion discussion

parents
No related branches found
No related tags found
No related merge requests found
def parse(expression): # This should have real logic
left_expression = "1"
operator = "+"
right_expression = "2"
return left_expression, operator, right_expression
def add(left_expression, right_expression):
return evaluate(left_expression) + evaluate(right_expression)
def subtract(left_expression, right_expression):
return evaluate(left_expression) - evaluate(right_expression)
def multiply(left_expression, right_expression):
return evaluate(left_expression) * evaluate(right_expression)
def divide(left_expression, right_expression):
return evaluate(left_expression) / evaluate(right_expression)
operator_map = {
"+": add,
"-": subtract,
"*": multiply,
"/": divide
}
def evaluate(expression):
if expression.isnumeric():
return expression
else:
left_expression, operator, right_expression = parse(expression)
return operator_map[operator](left_expression, right_expression)
if __name__ == '__main__':
print(evaluate("1+2"))
def non_terminating_recursion(a_string, instance_number):
a_longer_string = "{} {}".format(a_string, a_string)
# print( "Activation instance: {:d}".format(instance_number))
return non_terminating_recursion(a_longer_string, instance_number + 1)
if __name__ == '__main__':
print(non_terminating_recursion("This is a long string that's going to become even longer.", 0))
def poorly_defined_iterator(a_list):
if len(a_list) > 0:
print(a_list[0])
poorly_defined_iterator(a_list[1:])
def slightly_better_iterator(a_list):
for item in a_list:
print(item)
def poorly_defined_adder(a_list):
if len(a_list == 0):
return 0
else:
return a_list[0] + poorly_defined_adder(a_list[1:])
def slightly_better_adder(a_list):
total = 0
for item in a_list:
total += item
return total
if __name__ == '__main__':
poorly_defined_iterator([1, 2, 3, 4, 5])
slightly_better_iterator([1, 2, 3, 4, 5])
print(poorly_defined_adder([1, 2, 3, 4, 5]))
print(slightly_better_adder([1, 2, 3, 4, 5]))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment