递归方法无法将元素添加到arrayList中

时间:2019-02-11 01:18:19

标签: java recursion arraylist

我正在尝试创建 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);

0 个答案:

没有答案