递归实现组合问题
用递归,从自然数1,2,...,n中任取r个数的所有组合。如n=5,r=3,程序结果如下
5 4 3
5 4 2
5 4 1
5 3 2
5 3 1
5 2 1
4 3 2
4 2 1
3 2 1
以下程序在TURBOC2.0运行后不能得出以上结果,请问错在哪?
#include <stdio.h>
#define N 30
int a[N];
void comb(int n,int k)
{int i,j;
for(i=n;i>=k;i--)
{a[k]=i;
if(k>1) comb(n-1,k-1);
else { for(j=a[0];j>0;j--)
printf("%4d",a[j]);
printf("\n");
}
}
}
void main()
{int i,r;
i=5;r=3;
a[0]=r;
comb(i,r);printf("\n\n");
}