2015-09-17 167 views
0

我试图从它的Id中检索一个类别对象。 类别是可以包含其他类别和帖子的分层类。 我的实现是递归的:递归函数总是返回空

public static AAbstarctCategory getCategory(ACategory category, String id) { 
    if (id == category.id) { 
     return category; 

    } 
    else if (category.categories.containsKey(id)) { 
     return category.categories.get(id); 

    } 
    else if (category.posts.containsKey(id)) { 
     return category.posts.get(id); 

    } 
    else { 
     for (ACategory c : category.categories.getArray()) { 
      getCategory(c,id); 
     } 
    } 
    return null; 
} 

的问题是,该函数总是返回空... 建议

+0

调试并检查类别的值和id的值 – Stultuske

+0

添加一个返回语句'return getCategory(c,id);' – Saif

回答

4

您没有使用递归调用的返回值,请:)。在结束

变化

for (ACategory c : category.categories.getArray()) { 
     getCategory(c,id); 
    } 

for (ACategory c : category.categories.getArray()) { 
     AAbstarctCategory cat = getCategory(c,id); 
     if (cat != null) 
      return cat; 
    } 
+3

将getCategory的值保存为值并检查它是空的,如果它不为空则返回。否则,循环无道理。 – SomeJavaGuy

+0

@KevinEsche你有一点。 – Eran

+0

它带走了递归方法的全部观点虽然看起来虽然lol – kevintjuh93

0

return null;应该return getCategory(c, id);,然后你需要及早返回null另一个基本情况。