input: Write a function to generate all possible strings of a given length from a set of characters.
  assert generate_strings(['a', 'b', 'c'], 3) == ['aaa', 'aab', 'aac', 'aba', 'abb', 'abc', 'aca', 'acb', 'acc', 'baa', 'bab', 'bac', 'bba', 'bbb', 'bbc', 'bca', 'bcb', 'bcc', 'caa', 'cab', 'cac', 'cba', 'cbb', 'cbc', 'cca', 'ccb', 'ccc']
  assert generate_strings(['x', 'y'], 2) == ['xx', 'xy', 'yx', 'yy']
  assert generate_strings(['1', '2', '3'], 1) == ['1', '2', '3']
output: def generate_strings(char_set, length):
      if length == 0:
          return ['']
      smaller_strings = generate_strings(char_set, length - 1)
      result = []
      for char in char_set:
          for string in smaller_strings:
              result.append(char + string)
      return result