【发布时间】:2017-03-12 17:55:39
【问题描述】:
以下代码是将列表拆分为两部分的递归代码。
def split(lst:List[Int],lst1:List[Int],lst2:List[Int]): (List[Int],List[Int])=
lst match{
case Nil => (lst1,lst2)
case hd::Nil => (lst1,hd::lst2)
case hd::tail => split(tail.init,lst1:::List(hd), tail.last::lst2)
}
我想使用堆栈将此递归函数转换为迭代函数。
【问题讨论】:
-
到目前为止你尝试了什么?
-
它不需要堆栈,如果当你说“迭代”时你也允许变量。请更清楚地解释您的实际问题
-
我在测试中没有堆栈。但是教授少给我打分,坚持我用堆栈来做,而且可以做到。这就是问题中提到的全部内容。
-
我能理解的队列。但是堆栈是 LIFO,它根本不适合这个问题。啊,好的,我明白他的意思了。将第一个元素压入堆栈。将第二个元素压入另一个堆栈。如果有第三个元素,则另一个堆栈上的元素在错误的堆栈中。弹出它并将其推入第一个堆栈。将第三个(和第四个,如果存在)元素推入第二个堆栈,如果有第五个元素元素,则需要将第三个元素从第二个堆栈移动到第一个堆栈。 .... 等等。但是队列仍然工作得更好......
-
你能贴出它的代码吗?显然,我对堆栈不太满意。
标签: scala recursion stack iteration