我准备参加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
用来枚举所有组合的,就是一个三个参数的递归