解析:将字符看成两部分,第一个字符窜和后面字符窜,将后面和第一个字符窜进行交换,再进行递归打印
#include <iostream>
using namespace std;
class test{
public :
void pailie(char * pStr){
if(pStr==NULL){
return ;
}
pailie(pStr,pStr);
}
void pailie(char * pStr,char *pBegin){
if(*pBegin=='\0'){
cout<<pStr<<endl;
}else{
for(char *pCur=pBegin;*pCur!='\0';pCur++){
char temp=*pCur;
*pCur=*pBegin;
*pBegin=temp;
pailie(pStr,pBegin+1);
temp=*pCur;
*pCur=*pBegin;
*pBegin=temp;
}
}
}
};
int main(){
test A;
char a[]="abc";
A.pailie(a);
return 0;
}
运行结果: