Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 给定一个int a列表,使用递归返回一个新列表,该列表包含a的所有正元素_Java_List_Recursion - Fatal编程技术网

Java 给定一个int a列表,使用递归返回一个新列表,该列表包含a的所有正元素

Java 给定一个int a列表,使用递归返回一个新列表,该列表包含a的所有正元素,java,list,recursion,Java,List,Recursion,给定一个整数a列表,使用递归返回一个包含a所有正元素的新列表。元素应以与a相同的相对顺序出现在结果中。i、 e.[2,3,-5,8,-2]=>[2,3,8] 您尚未发布列表的代码,但算法应该是这样的: 如果列表为空,则返回一个空列表(list.empty()) 如果head元素是正的(a.getHead()>0),保留它并返回该元素和尾部的正元素列表(使用list.cons) 如果head元素是负数,则删除它并从尾部返回正元素列表 在您当前的代码中,第一点是正确的,但是另外两点是错误的:在h

给定一个整数a列表,使用递归返回一个包含
a
所有正元素的新列表。元素应以与
a
相同的相对顺序出现在结果中。i、 e.
[2,3,-5,8,-2]=>[2,3,8]


您尚未发布
列表的代码,但算法应该是这样的:

  • 如果列表为空,则返回一个空列表(
    list.empty()
  • 如果head元素是正的(
    a.getHead()>0
    ),保留它并返回该元素和尾部的正元素列表(使用
    list.cons
  • 如果head元素是负数,则删除它并从尾部返回正元素列表
在您当前的代码中,第一点是正确的,但是另外两点是错误的:在head元素为正的情况下,您忽略了它(如果head元素为负,那么您应该这样做)


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

您还没有发布
列表的代码,但这是算法应该显示的样子:

  • 如果列表为空,则返回一个空列表(
    list.empty()
  • 如果head元素是正的(
    a.getHead()>0
    ),保留它并返回该元素和尾部的正元素列表(使用
    list.cons
  • 如果head元素是负数,则删除它并从尾部返回正元素列表
在您当前的代码中,第一点是正确的,但是另外两点是错误的:在head元素为正的情况下,您忽略了它(如果head元素为负,那么您应该这样做)


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

这看起来很像LISP

而不是

return List.cons(0, a);
使用


这看起来很像LISP

而不是

return List.cons(0, a);
使用



你面临的问题是什么?你的问题是什么(requirement!=问题)。我不熟悉递归和列表,这个小问题让我很困惑。当我测试它时,代码返回混合的结果。如果您能帮我指出哪里出了问题,我将不胜感激。谢谢。你的代码没有为我编译。什么是您的
列表
?列表只是一个定义称为List的递归类型并提供构造函数和getter方法的类。您面临的问题是什么?你的问题是什么(requirement!=问题)。我不熟悉递归和列表,这个小问题让我很困惑。当我测试它时,代码返回混合的结果。如果您能帮我指出哪里出了问题,我将不胜感激。谢谢。你的代码没有为我编译。什么是您的
列表
?列表只是一个定义称为List的递归类型的类,并提供构造函数和getter方法。非常感谢您的帮助,Tunaki,我现在将尝试一下!非常感谢你对Tunaki的帮助,我现在就试试!谢谢,在将我的代码从“if(a.getHead()>0)”更改为if(a.getHead()<0)”后使用了它。@SteveChalmers,它工作了吗,你明白为什么吗?是的,它工作了,谢谢。我想我知道它是如何工作的,但我对递归还不熟悉,所以还不习惯。我会把它写在纸上,试着理解每一步。再次感谢。@SteveChalmers如果您使用的是eclipse,您可以在每次返回时都有一个断点,并每次检查列表。谢谢,在将我的代码从“if(a.getHead()>0)”更改为if(a.getHead()<0)”后使用它。@SteveChalmers,它是否有效,您明白为什么吗?是的,它有效,谢谢。我想我知道它是如何工作的,但我对递归还不熟悉,所以还不习惯。我会把它写在纸上,试着理解每一步。再次感谢。@SteveChalmers如果您使用eclipse,您可以在每次返回时都有一个断点,并每次检查列表。
return List.cons(a.getHead(), positives(a.getTail());