def rev(items): # base case: no work to do if items == []: return [] # recursive case: reverse the tail of the list # beware: don't use ".append" (which returns None) else: return rev(items[1:]) + [items[0]] # another way def rev2(items): # base case if items == []: return [] # recursive case: split into last element of list and the rest else: return [items[-1]] + rev2(items[:-1]) def test_rev(): a = ['z', 'y', 'x', 'w', 'v'] assert(rev(a) == ['v', 'w', 'x', 'y', 'z']) assert(rev(['x']) == ['x']) assert(rev([]) == []) print("Done testing reverse") def test_rev2(): a = ['z', 'y', 'x', 'w', 'v'] assert(rev2(a) == ['v', 'w', 'x', 'y', 'z']) assert(rev2(['x']) == ['x']) assert(rev2([]) == []) print("Done testing reverse")