首页 > 解决方案 > 如何制作一个递归方法,它采用 List 类型,其中输出是不同的 List?

问题描述

我正在尝试制作一个递归方法,它采用 a并返回一个新List的,只有原始的正数。IntegerListList

这就是我所做的

static List<Integer> positives(List<Integer> a) {
    if (a.getTail().isEmpty()) 
        return new List<Integer>(a.getHead(), new List<Integer>());

    if (a.getHead() - a.getHead() == 0) 
        new List<Integer>(a.getHead(), new List<Integer>());
        return positives(a.getTail());

    else
       return positives(a.getTail());

因此,当头部List为正时,它应该将其添加到一个新列表中,然后方法循环。如果头部不是积极的,它只是循环。当到达末尾时List,它应该返回包含正数的列表。

我现在可以用我的代码告诉我,该isEmpty()语句返回一个与肯定检查语句完全不同的列表,这是我出错的地方。所以我不知道当循环到达末尾时如何从第二个 if 语句返回列表List

标签: javalistrecursion

解决方案


尽管不是递归的,但最短的方法是使用流

List<Integer> posList = a.stream().filter(x -> x > 0).collect(Collectors.toList());

推荐阅读