给定一个整数列表a,返回一个新列表,其中包含使用递归的
a
的所有正元素。元素应以与a
中相同的相对顺序出现在结果中。即[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);
}
答案 0 :(得分:1)
您尚未发布List
的代码,但这就是算法的样子:
List.empty()
)。a.getHead() > 0
),请保留它并返回该元素的列表以及尾部的正元素(使用List.cons
)。在你当前的代码中,第一个点是正确完成的,但另外两个是正确的:在head元素为正的情况下,你忽略它(当你应该这样做时,如果head元素是负数而不是)。
这应该足以让您更正代码。
答案 1 :(得分:1)
这看起来很像LISP。
而不是
return List.cons(0, a);
使用
return List.cons(a.getHead(), positives(a.getTail());