#--------------------------------------------------------------------- # Recursice computation of list length: def rec_list_len(lis): if not lis: return 0 #print "calling rec_list_len with lis = {}".format(lis) return 1 + rec_list_len(lis[1:]) print "Recursive computation of list length:" print for lis_siz in range(5): lis = range(lis_siz) lis_len = rec_list_len(lis) print 'List: {} Length: {}'.format(lis, lis_len) print # Also test rec_list_len on other kinds of sequences than lists: s = 'hello there' print 'String: "{}" Length: {}'.format(s, rec_list_len(s)) print s = 'the quick brown fox' print 'String: "{}" Length: {}'.format(s, rec_list_len(s)) print student = ('Jack', 25, 'New York') print 'Tuple: {} Length: {}'.format(student, rec_list_len(student)) print student = ('Jill', 27, 'Paris', 'France') print 'Tuple: {} Length: {}'.format(student, rec_list_len(student)) print #--------------------------------------------------------------------- # Recursive list sum computation. # Assumes list items are numbers. def rec_list_sum(lis): if not lis: return 0 return lis[0] + rec_list_sum(lis[1:]) for r in range(5): lis = range(r) print "Sum:", rec_list_sum(lis), "List:", lis #--------------------------------------------------------------------- # Recursive list product computation. # Assumes list items are numbers. def rec_list_product(lis): if not lis: return 1 return lis[0] * rec_list_product(lis[1:]) for r in range(1, 7): lis = range(1, r) print "Product:", rec_list_product(lis), "List:", lis #---------------------------------------------------------------------