记录一次 不确定多层for循环的写法

最近做一个商城类型的项目,用到了选择规格,类似淘宝发布那个样式,需要多种规格组合,并且是多组数据组合,一时也比较麻烦,用for循环吧,也不确定是多少层,也麻烦,最后想到了递归,于是就写出来了下面的一段代码,也解决了这个问题。

- (void)cyle {
    _resultsArray = [NSMutableArray array];
    _dataArray = @[@[@"1",@"2",@"3"],
                   @[@"4",@"5",@"6",@"*"],
                   @[@"7",@"8",@"9"]];
    [self cyle:0 dataArr:_dataArray[0]];
    NSLog(@"%@",_resultsArray);
}
/*
 * @param count 循环层数
 * @param arr 每次循环数据数组
 */
- (void)cyle:(NSInteger)count dataArr:(NSArray *)arr {
    if (count == 0) {
        [_resultsArray addObjectsFromArray:arr];
    } else {
        NSMutableArray * tempArray = [NSMutableArray array];
        for (NSInteger i = 0; i < _resultsArray.count; i++) {
            for (NSInteger j = 0; j < arr.count; j++) {
                [tempArray addObject:[NSString stringWithFormat:@"%@-%@",_resultsArray[i],arr[j]]];
            }
        }
        [_resultsArray removeAllObjects];
        _resultsArray = tempArray;
    }
    count++;
    if (count >= _dataArray.count) {
        return;
    }
    [self cyle:count dataArr:_dataArray[count]];
}

/*
输出结果:
    "1-4-7",
    "1-4-8",
    "1-4-9",
    "1-5-7",
    "1-5-8",
    "1-5-9",
    "1-6-7",
    "1-6-8",
    "1-6-9",
    "1-*-7",
    "1-*-8",
    "1-*-9",
    "2-4-7",
    "2-4-8",
    "2-4-9",
    "2-5-7",
    "2-5-8",
    "2-5-9",
    "2-6-7",
    "2-6-8",
    "2-6-9",
    "2-*-7",
    "2-*-8",
    "2-*-9",
    "3-4-7",
    "3-4-8",
    "3-4-9",
    "3-5-7",
    "3-5-8",
    "3-5-9",
    "3-6-7",
    "3-6-8",
    "3-6-9",
    "3-*-7",
    "3-*-8",
    "3-*-9"
*/

转载于:https://my.oschina.net/snOS/blog/758527

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值