java - 给定一个整数 a 列表,使用递归返回一个新列表,其中包含 a 的所有正元素

标签 java list recursion

Given a list of integers a, return a new list which contains all the positive elements of a using recursion. The elements should appear in the result in the same relative order as in a. i.e. [2, 3, -5, 8, -2] ==> [2, 3, 8].

public static List positives(List a) {
    if (a.isEmpty())
        return List.empty();
    if (a.getHead() > 0)
        return  positives(a.getTail()); 
    else
    return List.cons(0, a);
}

最佳答案

您还没有发布 List 的代码,但算法应该是这样的:

  • 如果列表为空,则返回空列表 (List.empty())。
  • 如果头元素为正 (a.getHead() > 0),则保留它并返回该元素和尾部正元素的列表(使用 List.cons )。
  • 如果头元素为负,则删除它并仅返回尾部的正元素列表。

在您当前的代码中,第一点正确完成,但其他两点不正确:在 head 元素为正的情况下,您将忽略它(如果 head 元素为负,则您应该这样做)。

这应该足以让您更正代码。

关于java - 给定一个整数 a 列表,使用递归返回一个新列表,其中包含 a 的所有正元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34843083/

相关文章:

python - 找不到根据键翻译字符串的简单方法

python - 在 python 中扩展列表直到满足条件

algorithm - 相互检查列表中的每个值

java - 字符串索引越界错误

scala - 为什么这个不可变的双向链表实现会溢出堆栈

java - 正则表达式,用逗号和 - 分隔的字符

java - 调用自定义适配器时出现空点异常 : Android

c - 具有递归和给定结构的 BST

java - Spring @RestController 不使用 Kotlin 映射 URL

java - 在应用程序服务器中运行微基准测试 [JMH]