以下是一个例子,例如我有3个嵌套循环和第4个外循环,基于第4个外循环,我想决定内循环运行多少次(我希望内循环运行1或50(x))。
因此,由于外部循环从0到2,我希望它使最内部循环变为50次(x),然后两个外部循环变为一次,然后在1上我希望最内部循环再次变为50次第二个最外面也是50次,第三个最外面1次,然后最后一次,当i = 2时,我希望所有3次去50次。
int x=50;
for(int i=0; i<3; i++){
for(int j=0; j<x; j++){ //go 50 times when i = 2
for(int k=0; k<x; k++){ //go 50 times when i=1 or 2
for(int l=0; l<x; l++){//always go 50 times
}
}
}
}
答案 0 :(得分:2)
你暴露问题的方式让人很难理解。
根据我的理解和社区的评论,这是我的贡献,以帮助您实现目标。
int x=50;
for(int i = 0; i < 3; i++){
//go 50 times when i = 2, jsut 1 time otherwise
int maxJ = i == 2 ? x : 1;
for(int j = 0; j < maxJ; j++ ){
//go 50 times when i=1 or 2, go 1 time otherwise
int maxK = i == 1 || i == 2 ? x : 1;
for(int k = 0; k < maxK; k++){
//always go 50 times
for(int l = 0; l < x; l++){
}
}
}
}
在for
循环的第三个参数中,我们决定如何递增计数器。因此,我们可以将代码更改为:
// if i == 2, then increment by one.
// else, increment by x (running one time)
for(int j = 0; j < x; j = i == 2 ? j + 1 : j + x )
答案 1 :(得分:0)
在每个循环之前使用if(i == what what)x = 50或者你想要的东西
答案 2 :(得分:-1)
你需要这样的东西吗?
int x=50;
iloop:for (int i = 0; i < 3; i++)
{
for (int j = 0; j < x ; j++)
{
if(j>0 && i!=2)
continue iloop;
for (int k = 0; k < x ; k++)
{
for (int m = 0; m < x ; m++)
{
if(i==0 && m==(x-1))
continue iloop;
}
}
}
}