题目:编写一个函数,在数组a[10] = {1,3,5,7,9,11,13,15,17}中输出和为25的所有整数组合
思想:递归,探底一种情况后返回前一种状态。
代码:
#include <stdio.h>
#include <string.h>
char a[10] = {1,3,5,7,9,11,13,15,17};
char b[10];
void f(int n)
{
static int n1 = 0;
static int n2 = -1;
int i;
int j;
for(i = n1;i < 10;i++)
{
if(n > a[i])
{
n1 = i+1;
n2++;
b[n2] = a[i];
n -= a[i];
f(n);
n += a[i];
n2--;
}
else if(n == a[i])
{
n2++;
b[n2] = a[i];
for(j = 0;j <= n2;j++)
{
printf("%d ",b[j]);
}
printf("\n");
n2--;
return;
}
else
{
return;
}
}
}
int main()
{
f(25);
return 0;
}