代码如下:
#include<stdio.h>
#include<math.h>
#define SWAP(x,y,t) ((t)=(x),(x)=(y),(y)=(t))
#define MAX_SIZE 101
void perm(int [],int,int);
main()
{
int i,n;
int list[MAX_SIZE];
printf("Please enter a number:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
list[i]=rand()%100;
printf("%d ",list[i]);
}
printf("\n");
perm(list,0,n-1);
getch();
}
void perm(int list[],int i,int n)
{
int j,temp;
if(i==n)
{
for(j=0;j<=n;j++)
{
printf("%d ",list[j]);
}
printf(" ");
}
else
{
for(j=i;j<=n;j++)
{
SWAP(list[i],list[j],temp);
perm(list,i+1,n);
SWAP(list[i],list[j],temp);
}
}
}
perm函数中else里的看不懂,最好能说一下它的递归思路。