objective-c - 有效地创建一个嵌套的 for 循环 x 层深

标签 objective-c

这可能是一件简单的事情,但我需要创建一个循环结构,使其循环 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/

相关文章:

objective-c - 尝试制作自定义 TabBar。在 iPhone 3GS 中使用 viewController 转换会崩溃(但在 iPhone 4 中不会)

ios - 调用 presentViewController 修改呈现 View 的框架?

objective-c - NSMutableDictionary* 字典 = @{}.mutableCopy VS NSMutableDictionary * 字典 = [NSMutableDictonary 新]

Objective-C:制作文档

iphone - 使用 initWithContentsOfUrl 时如何设置内容类型

ios - 获取给出属性名称的属性类

objective-c - 获取当前的 iCloud 同步状态

iphone - 在 ios 应用程序的 dispatch_async 中可以创建的最大任务数是多少

ios - UITableView 滚动到最接近今天日期的部分

ios - 从 NSData 创建 Jpeg