【发布时间】:2015-03-19 20:09:22
【问题描述】:
**大家好, 我有一个关于递归关系/大 O 表示法的问题。我得到了一个家庭作业,要求我给出一些旧代码/算法的大 O 表示法,这些代码/算法是我为之前的家庭作业提出的。可悲的是,我还没有上过有限数学的课程。所以这对我来说是新的。我设法找出了我使用的四种算法中的三种。但是,我被困在第四种算法上。此方法是一种递归方法,并且是用 Java 编码的。我确实花了好几个小时试图弄清楚这一点,我看过很多视频并阅读了很多关于大 O 表示法的文章,但遗憾的是无法理解。任何帮助都会很棒!!! 这是代码:
ArrayList<FacebookUser> getRecommendations(FacebookUser e) {
FacebookUser rootUser = userCallForList.get(0);
if(rootUser.getFriends().isEmpty() || e.getFriends().isEmpty()){
return returnHash();
}
for(FacebookUser hold : e.getFriends()){
if( !hold.equals(rootUser) && addHash(hold)){
getRecommendations(hold);
}
}
return returnHash();
}
关于代码的注意事项: 该方法将 FacebookUser 作为参数。该方法返回一个 ArrayList,其中包含传递给它的 FacebookUser 的所有朋友以及对该 FacebookUser 的所有朋友调用相同 getRecommendations 方法的结果。如果他们已经在推荐列表中,它不会将任何人添加到推荐列表中,并且不会添加调用它的 FacebookUser (E.I rootUser);因为这可能导致无限循环。我使用 HashSet 作为我的集合,然后我必须将其更改回 ArrayList。
【问题讨论】:
标签: java recursion big-o recurrence