关于递归的比较恶的题目,特来求教!有兴趣的可以来看看!谢谢
不说废话了我,附上程序代码!题目将从1到n(为偶数)这n个整数围成一个圆环,若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环。
*输入n输出它所有的素数环。
*如:
*输出20的一个素数环:
*1 2 3 4 7 6 5 8 9 10 13 16 15 14 17 20 11 12 19 18
#include<iostream>
#include<cmath>
using namespace std;
int data[222]={0};
int used[111]={0};
int flag[111];
bool isok=false;
bool check(int n)
{
int i,flag;
if(n==2)
return true;
else
{
for(i=2;i<=sqrt(n);i++)
{
flag=0;
if(n%2==0)
{
flag=1;
break;
}
}
if(flag==0)
return true;
else
return false;
}
}
void huan(int *data,int k,int n)
{
if(isok)
return ;
int i;
for(i=1;i<=n;i++)
{
if(k==1)
{
data[k]=i;
used[i]=1;
huan(data,k+1,n);
}
else
if(k==n)
{
if((used[i]==0)&&check(i+data[k-1])&&check(i+data[1]))
{
used[i]=1;
data[k]=i;
for(int j=1;j<=n;j++)
cout<<data[j]<<" ";
cout<<endl;
isok=true;
return ;
}
}
else
{
if(used[i]==0&&check(i+data[k-1]))
{
used[i]=1;
data[k]=i;
huan(data,k+1,n);
}
}
}
}
void main()
{
int n,i;
cout<<"请输入你要的数字(必须要是偶数):";
cin>>n;
while(n%2!=0)
{
cout<<"请重新输入:";
cin>>n;
}
for(i=1;i<=n;i++)
flag[i]=i;
huan(data,1,n);
}
自认为写的代码没什么问题,不知道为什么运行不出结果来!改怎么改!求助各位大侠!学了一学期C++,还望指点……