美文网首页iOS-递归
iOS使用递归处理数组数据

iOS使用递归处理数组数据

作者: 风外杏林香 | 来源:发表于2017-05-10 15:31 被阅读2150次

递归使用背景,(彩票类app,需要遍历出所有的组合方式,比如竞彩足球,我选择两场比赛,每场比赛选择3种结果,过关方式为2串1)


如图所选

而这种选择方式总共有9注,分别用3、1、0来代表胜、平、负,则出现的结果为:33、31、30、13、11、10、03、01、00,将所选中的比赛加到数组里面,接下来,我要遍历出每种组合方式,需要得到如图所示的方案


上图为我所需要的数据
代码如下
    NSMutableArray *dataArray = [NSMutableArray arrayWithArray:[self.recordEveryGamesSelectedDetail allValues]];//此处数组是我从上个页面传过来的选择数据,
    self.needArray = [NSMutableArray array];//最终得到的组合数组(排列结果为33、31、30、13、11、10、03、01、00)
    NSMutableArray *result = [NSMutableArray array];
    [self combine:result data:dataArray curr:0 count:(int)dataArray.count];//调用递归函数,处理数据

#pragma mark -- 使用递归排列组合出所有可能出现的方式
- (void)combine:(NSMutableArray *)result data:(NSArray *)data curr:(int)currIndex count:(int)count
{
    if (currIndex == count) {
        [self.needArray addObject:[result mutableCopy]];
        [result removeLastObject];
    } else {
        NSArray *array = [data objectAtIndex:currIndex];
        for (int i = 0; i < array.count; ++i) {
            [result addObject:[array objectAtIndex:i]];
            //进入递归循环
            [self combine:result data:data curr:currIndex+1 count:count];
            if ((i + 1 == array.count) && (currIndex - 1 >= 0)) {
                [result removeObjectAtIndex:currIndex - 1];
            }
        }
    }
}

如下图、打印出来的组合方式即为我需要的组合方式

由于我们提交服务器的时候胜平负为3、1、0,所以这里需要我们自己处理下数据,就可以得到如图二所需的

以上就是使用递归,简单处理数据,然当数据量特别庞大时候,会很卡,所以,类似于这种数据处理,还是交给后台处理最好,加油!!!

相关文章

  • iOS使用递归处理数组数据

    递归使用背景,(彩票类app,需要遍历出所有的组合方式,比如竞彩足球,我选择两场比赛,每场比赛选择3种结果,过关方...

  • 如何写一个 flatten

    普通的递归 内部有一个用于递归的函数, 递归地去处理类型是数组的元素 使用 reduce (内部还是递归) 使用c...

  • 面试中可能遇到的数组问题

    数组去重 利用对象属性不能重复的特性 使用递归,先排序,再递归比较 利用ES6 默认的set数据结构,类似数组,但...

  • 算法:谈谈数据结构【数组】那些事

    导读: 数据是最基本的数据结构,能解决很多问题,比如常见的,求解,使用数组来解决重复递归过程,动态规划使用数组记录...

  • Array的变化侦测(二)

    侦测数组中元素变化 侦测数组的变化类比对Object的递归处理,我们也需要监测子项的变化。另外,数组与对象的使用需...

  • 数据结构与算法掌握这些就够了

    数据结构 线性结构数组、链表、栈、队列 非线性多维数组、树、图 1. 栈 后进先出,可以处理递归调用实际应用:字符...

  • JS文集的目录

    js基础心法 深浅拷贝(递归)深浅拷贝(首层浅拷贝) js 数据处理 数组对象查找的常见操作数组对象去重的常见操作...

  • 一个(数字)数组任意组合相加等于一个常数求出数组中的组合

    1 将传进数据数组排序2 递归求和 (当相加大于特定值 进行内部递归)1 将数组排序 2 判定数组之和 内递归的实...

  • Js递归数组展平

    遇到多个嵌套的数组,将嵌套的数组中的元素全部展开到最外层的数组中,可以使用递归来解决这个问题。 什么是递归? 递归...

  • iOS 数组越界的处理和优化方案。

    iOS开发中最常见的列表数据,必须使用数组,但是使用数组总会出现数组越界的情况,下面列出三种优化数组越界的方式。 ...

网友评论

  • 风外杏林香:4场比赛3串1属于组合投注,需要遍历出所有的组合方式,然后再递归,就可以
    名扬丶四海:你好,能不能给改一下代码,现在这一块比较晕,看一下你是怎么改的
  • 名扬丶四海:你好,看了下你的代码,如果是4场比赛3串1应该怎么写

本文标题:iOS使用递归处理数组数据

本文链接:https://www.haomeiwen.com/subject/srkgtxtx.html