Hey, does anyone think they could explain how this code works?

```
def hanoi(n, a='A', b='B', c='C'):
"""
move n discs from a to c using b as middle
"""
if n == 0:
return
hanoi(n-1, a, c, b)
print a, '->', c
hanoi(n-1, b, a, c)
hanoi(3)
```