用递归法求N个数R个数的组合的问题?
这是软考书上的一段代码;
[程序片断(递归函数)]
void comb( int n, int r )
{
int i = 0;
for( i = n; i >= r; i -- )
{
if( ( i != n ) && ( k != r ) ) //k为过程外定义的
{
int temp = 0;
for( temp = 1; temp < ( k - r ) * 3; temp++ )
{
printf( " " );
}
}
printf( "%3d", i );
if( i > 1 )
{
comb( i - 1, r - 1 );
}
else
{
printf( "\n" );
}
}
}
我的问题是,我调用此函数输出的结果不对;
comb( 5, 3 )
求5个数中3个数的组合,正确的输出应该是;
543
542
541
532
531
521
432
431
421
321
这是什么问题,我觉得是输出方面不对,书上只给出了程序的片段.
谢谢各位 !!