这可能是一件简单的事情,但我需要创建一个循环结构,使其循环 y^x 次以创建 x 和 y 的所有可能组合。例如,如果有 4 个 x,每个 x 有 2 个 y,我想做类似的事情:
for(int a=0; a < y; a++){
for(int b=0; b < y; b++){
for(int c=0; c < y; c++){
for(int d=0; d < y; d++){
// create a new object with values of a, b, c, d
}
}
}
}
基本上,创建 x 个嵌套 for 循环以创建总共 y^x 个对象(在本例中为 16 个)。假设值 x 和 y 可以改变,最简单和最有效的方法是什么?我假设递归可能以某种方式涉及,但我不是 100% 确定如何去做。
最佳答案
当你在编译时不知道嵌套层次时,你需要使用递归:函数应该有一个循环代表第k
嵌套层次,并继续递归调用自己直到第 N
级已达到:
-(void) nestAtLevel:(int)k withItems:(int[])items from:(int) from to:(int)to {
if (k >= 0) {
for (items[k] = from ; items[k] != to ; items[k]++) {
[self nestAtLevel:k-1 withItems:items from:from to:to];
}
} else {
// Use the indexes produced recursively: the current values are in items 1..N-1
[self creatObjectsWithIndexes:items];
}
}
初始调用应如下所示:
int items[5];
[self nestAtLevel:4 withItems:items from:0 to:4];
我假设还有一个函数 creatObjectsWithIndexes
接受一个索引项数组,并从中生成一个对象。
关于objective-c - 有效地创建一个嵌套的 for 循环 x 层深,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15866798/