Подумайте о наборе мощности {1, 2, 3}.Мы можем думать об этом как о комбинации:
{}
{1} + powerset {2, 3}
{2} + powerset {3}
{3} + powerset {}
Если взять строку {1} + powerset {2, 3}
, то это расширится до:
{1} + { {}, {2}, {3}, {2, 3} }
, что в свою очередь станет:
Код делает то же самое, используя рекурсию для генерации меньших наборов мощности и накапливая каждый набор в списке.