multiple recursion in backtracking

I'm interested in resources / more information about backtracking specifically that are based on recursion. I came across this topic through several examples, e.g. all possible subset generation, exact set cover, eight queens problem and I wanted to understand it in more detail. For example, the following multiple recursion occurs in the subset generation problem:

int cnt;
vector<int> subset;

void print_vec(vector<int> vec)
{
    for (int i=0; i < (int) vec.size(); ++i) {printf("%d ", vec[i]);}
}

void search(int k, int n)
{
    if (k == n)
    {
        //process subset
        printf("%d: ", cnt++); print_vec(subset); printf("\n");
    }
    else
    {
        search(k+1, n);
        subset.push_back(k);
        search(k+1, n);
        subset.pop_back();
    }
}

Any pointers and resources on multiple recursion are welcomed!

Comments (1)