input: Write a python function to solve the Tower of Hanoi problem and print the steps taken to move the discs.
  assert tower_of_hanoi(1, "A", "B", "C") == ["Move disc 1 from A to C"]
  assert tower_of_hanoi(2, "A", "B", "C") == ["Move disc 1 from A to B", "Move disc 2 from A to C", "Move disc 1 from B to C"]
  assert tower_of_hanoi(3, "A", "B", "C") == ["Move disc 1 from A to C", "Move disc 2 from A to B", "Move disc 1 from C to B", "Move disc 3 from A to C", "Move disc 1 from B to A", "Move disc 2 from B to C", "Move disc 1 from A to C"]
output: def tower_of_hanoi(n, source, auxiliary, target):
      def move_discs(n, source, auxiliary, target, steps):
          if n == 1:
              steps.append(f"Move disc 1 from {source} to {target}")
          else:
              move_discs(n-1, source, target, auxiliary, steps)
              steps.append(f"Move disc {n} from {source} to {target}")
              move_discs(n-1, auxiliary, source, target, steps)
      
      steps = []
      move_discs(n, source, auxiliary, target, steps)
      return steps