1、问题描述:一串字母/数字的组合,进行不同的排列顺序,最终全部打印出来。

分析:的用到递归的思想。

2、代码实现

考虑到通用性,模板的使用,所以用C++实现:

#include<iostream>usingnamespacestd;template<classType>//交换2个数的函数voidswap_(Type&a,Type&b){Typetmp=a;a=b;b=tmp;}template<classType>voidPerm(Typelist[],intk,intm){if(k==m){//结束条件for(inti=0;i<=m;i++){cout<<list[i];}cout<<endl;}else{for(inti=k;i<=m;i++){swap_(list[k],list[i]);Perm(list,k+1,m);//递归下一个数swap_(list[k],list[i]);}}}intmain(void){intar[]={1,2,3};intn=sizeof(ar)/sizeof(int);Perm(ar,0,n-1);//传ar,下标0,最后一个数字的下标(n-1)return0;}

结果如下