我正在尝试创建 ArrayList (friends
)的递归以填充另一个 ArrayList (recommendations
)。但是,递归方法不起作用。问题如下:
我们应该如何推荐新朋友?我们将采用推荐所有朋友的朋友和朋友的朋友的朋友的方法,依此类推。这是使用递归的绝佳机会–我们可以创建一个以FacebookUser作为参数的getRecommendations方法。该方法应返回一个ArrayList,其中包含传递给它的FacebookUser的所有朋友,以及对所有FacebookUser的朋友调用相同的getRecommendations方法的结果。注意不要将任何人添加到建议列表中(如果已在建议列表中)–这可能会导致无限循环。
public ArrayList<FacebookUser> getRecommendations(FacebookUser user){
ArrayList<FacebookUser> recommendations = new ArrayList<FacebookUser>();
for (FacebookUser friend : user.getFriends()) {
getRecommendations(friend, recommendations);
}
if (!recommendations.isEmpty()) {
System.out.println("Recommended Friends");
System.out.println(recommendations);
}
return recommendations;
}
public void getRecommendations(FacebookUser friend, ArrayList<FacebookUser> recommendations) {
if (friend != null && friend.getFriends() != null && !friend.getFriends().isEmpty()) {
for (FacebookUser friendFriend : friend.getFriends()) {
if (!recommendations.contains(friendFriend)) {
recommendations.add(friendFriend);
System.out.println(recommendations); //test
getRecommendations(friendFriend, recommendations);
}
}
}
}
我希望第一个getRecommendations()
方法下的递归起作用,并将其归结为第二个getRecommendations()
方法。但是,它跳过了以下部分:
getRecommendations(friend, recommendations);