嵌套for循环迭代替代

时间:2016-04-21 23:53:15

标签: algorithm data-structures

我有以下不同的类型

Types:
R -> R1, R2, R3....
RE -> RE1, RE2, RE3....
REA -> REA1, REA2, REA3...

They have the following relationship.

Tree Structure

对于给定的项目列表,我想迭代每个叶子并执行一些操作。 现在,我有一个for循环嵌套三个级别。

for (r in Rs) {
 List<RE> REs = get(R);
 for(re in REs) {
   List<REA> REAs = get(re);
   for(rea in REAs) {
     //do some processing for the list of items
     for(each item in items) {
       //process each item
     }
   }
 }
} 

对于这个迭代的方法有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您不确定使用哪种语言,但可以通过不在本地存储所有列表来缩短该代码段:

for (r in Rs) {
  for (re in get(r)) {
    for (rea in get(re)) {
      for (item in rea) {
        //process each item
      }
    }
  }
}

或者你可以递归:

traverse(items) {
    if (items.isLeaf()) {
      // process items
    } else {
        for (item in items) {
            traverse(item);
        }
    }
}
traverse(Rs)