Python递归生成器如何工作?

Amzero 8 python recursion generator permutation

Python教程中,我已经了解到了

与功能类似,可以递归编程发生器.以下示例是一个生成器,用于创建给定项目列表的所有排列.

def permutations(items):
    n = len(items)
    if n==0: yield []
    else:
        for i in range(len(items)):
            for cc in permutations(items[:i]+items[i+1:]):
                yield [items[i]]+cc

for p in permutations(['r','e','d']): print(''.join(p))
for p in permutations(list("game")): print(''.join(p) + ", ", end="")

我无法弄清楚它是如何产生结果的.递归的东西和'收益'真的让我很困惑.有人能清楚地解释整个过程吗?