C/C++
c++ 멱집합 질문드립니다.
#include
#include
using namespace std;

int n;
string Data = "abcdef";
bool include[6];

void Powerset(int k)
{
    if (k == n)
    {
        for (int i = 0; i < n; i++) // i = 0 1 2 3 4 5
        {
            if (include[i])
                cout << Data[i] << "";
        }
        cout << endl;
        return;
    }


    include[k] = false;
    Powerset(k + 1);

    include[k] = true;
    Powerset(k + 1);
}

int main()
{
    n = Data.size();
    Powerset(0);
}

이렇게 짜여진 코드가 있어서 해석해보려고 하는데 막상 잘 안되더라고요.. 멱집합 자체는 알고있지만 구현과 해석이 어려워서 질문드립니다.

if문과 for문 자체는 반복문이라서 어느정도 해석됩니다. 다만 아래의 

    include[k] = false;
    Powerset(k + 1);

    include[k] = true;
    Powerset(k + 1);
}

int main()
{
    n = Data.size();
    Powerset(0);
}

이쪽서부터 이해가 많이 안됩니다.. 이 구문(문단) 하나씩 빼봐서 구동이 되나 싶었지만 구동이 안되더라고요..

그 이유도 너무 모르겠어서 질문드립니다.

댓글 3