递归全排列

2016-11-30 10:11:58来源:网络收集作者:程序猿人点击

第七城市

递归全排列,有需要的朋友可以参考下。



递归思想,用重复的简单过程实现一个复杂的项目,递归要素有


1、递归的每一层,规模要逐渐缩小


2、递归必须有出口,一般每个递归函数一开始,是判断递归成立的条件


3、递归包括递进过程和返回过程


4、要注意递归实现次数,一般在调用递归函数前加上递归重复条件


常见的结构是:


递归函数()


{


if(条件成立,例如规模足够小)


{


执行操作并退出递归;


}


else(条件不成立)


{


//递归的重复实现部分


递进过程;


while(递归重复条件)


{


递归函数再调用;


}


返回过程;


}


}


示例代码,实现递归全排列


//递归全排列#include
using namespace std;
void swap(int list[],int i,int j)//两个元素交换位置
{
int t=list[i];
list[i]=list[j];
list[j]=t;
}
void permutation(int list[],int m,int n)//递归排序
{
if(m==n)
{
for(int i=0;i<=n;i++)//递归出口,当m=n时,一次递归到最底层
cout<cout<}
else
{
for(int i=m;i<=n;i++) //因为要实现多次递归,所以在调用递归函数前要设置重复条件
{
swap(list,m,i);//不同的数分别和“第一个数”换位置 ,这是递归的递进过程
permutation(list,m+1,n);//对“第一个数”除外的剩余其他数全排列
swap(list,m,i);//将位置换回来 ,这是递归的返回过程
}
}
}
int main()
{
int a[]={1,2,3};
permutation(a,0,2);
system("pause");
return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台