各路大神,帮忙看一下为什么编译通过不了啊,这c++语法真麻烦
#include<iostream>
//初始化为空集;
int*flag;
void Initial(int n)
{
flag=new int[n];
for(int j=0;j<n;j++)
flag[j]=0;
}
template<class T>
SonCollect(int k,int m,T list[])
{
//一次编码方式确定后按flag输出;
if(k==m)
{
for(int i=0;i<m;i++)
if(flag[i]==1)
cout<<list[i];
cout<<endl;
}
//继续按照递归式编码;
flag[k]=0;
SonCollect(k+1,m,list);
flag[k]=1;
SonCollect(k+1,m,list);
}
void main()
{
int list[4]={1,2,6,3};
Initial(4);
SonCollect(0,4,list);
}
答案:#include<iostream>
using namespace std ;
//初始化为空集;
int*flag;
void Initial(int n)
{
flag=new int[n];
for(int j=0;j<n;j++)
flag[j]=0;
}
template<class T>
int SonCollect(int k,int m,T list[])
{
//一次编码方式确定后按flag输出;
if(k==m)
{
for(int i=0;i<m;i++)
if(flag[i]==1)
cout<<list[i];
cout<<endl;
return 0 ;
}
//继续按照递归式编码;
flag[k]=0;
SonCollect(k+1,m,list);
flag[k]=1;
SonCollect(k+1,m,list);
}
void main()
{
int list[4]={1,2,6,3};
Initial(4);
SonCollect(0,4,list);
system("pause") ;
}
是你想要的结果吗?
其他:把编译器显示的错误信息拿出来亮亮啊 我先指出三点吧:
1,SonCollect();这个函数没有设置返回类型。你可以加个void上去。
2,还是SonCollect这个函数,既然说是递归,那么什么时候结束递归没有写。是不是应该在判断体里面加上一行return呢?
if(k==m)
{
for(int i=0;i<m;i++)
if(flag[i]==1)
cout<<list[i];
cout<<endl;
return;
}
3,cout和endl没有加上std命名空间。你可以使用std::cout和std::endl,或者简单点在头文件#include<iostream>之后加上一句using namespace std;
上一个:c语言,希望详细的解答,谢谢
下一个:[C++]starttimer()这个函数怎么使用的,它的意思是什么?谢谢