阅读程序 带有三个参数的递归函数怎么列表?

我准备参加NOIP,试题里面有阅读程序的题,以前遇到递归的函数就列表,后来见到三个参数的就瞬间无语了O__O"…怎么办呀?

什么叫列表?三个参数有什么奇怪的,比如如下程序

 #include <iostream>
using namespace std;

void foo(int * s, int n, int x)
{
    if (x == 0)
    {
        for (int i = n - 2; i >= 0; i--)
            cout << s[i] << " ";
        cout << endl;
    }
    else
    {
        for (int i = 0; i < x; i++)
        {
            int * s1 = new int[n + 1];
            for (int j = 0; j < n; j++) s1[j] = s[j];
            s1[n] = i;
            foo(s1, n + 1, i);
        }        
    }
}

int main()
{
    foo(NULL, 0, 5);
    return 0;
}

1
2
1 2
3
1 3
2 3
1 2 3
4
1 4
2 4
1 2 4
3 4
1 3 4
2 3 4
1 2 3 4

用来枚举所有组合的,就是一个三个参数的递归