C++如何将嵌套的for循环改写成通用模式 60
count[4]=[1,2,3,4];
for(int i=0;i<count[0];i++)
for(int j=0; j<count[1];j++)
for(int m=0;m<count[2];m++)
for(int n=0;n<count[3];n++)
.......
这样的一个程序如何改写成通用的形式?用函数的话请具体说明下如何使用,谢谢! 展开
/*
c++不能动态生成代码,就像上面,不能动态生成循环。但是换种思路能解决你的问题,
如果具体的循环内容如图:
可以用如下函数实现相同效果
原理:执行s1的时候,循环总次数能被count[2]*count[3]整除
执行s2()的时候,循环总次数能被1整除
*/
/*
@count数组
@len数组长度
*/
void circle ( int count[], int len)
{
int total = 1; //总共循环次数
int sub_total_2 = 1;//第二层循环子循环数,需计算
int sub_total4 = 1;//第4层循环内子循环次数,需计算
for (int i = 0; i <len; i++)
{
total*=count[i];
if(i>1)
sub_total2 *= count[i];
if(i>3)
sub_total4 *= count[i];
}
for( int j = 1; j<= total; j++)
{
if(total % sub_total2 == 0)
s1();
if(total % sub_total4 == 0)
s2();
}
}