gpt4 book ai didi

algorithm - 使用递归查找列表的第一个和最后一个元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:28:54 25 4
gpt4 key购买 nike

我正在尝试在 Scala 中编写递归函数,返回列表(对)的第一个和最后一个元素。我只想使用 .head.tail 而不使用 match 使用简单(不是尾部)递归(没有定义附加函数)。可能吗?

我可以使用这段代码找到的最后一个元素:

def foo(x: List[Int]): (Int) = {
if (x.tail.isEmpty) (x.head)
else foo(x.tail)
}

我想返回包含第一个和最后一个元素的对 (Int, Int)。参数是 (x: List[Int])。如果我将 head 作为参数传递很容易,但是不这样做是否可能?

最佳答案

您可以对尾部使用内部递归函数,对头部使用外部函数。

但是 - 这是否仍然符合练习的精神,是另一个问题。

这是一个非常低效的解决方案:

def firstAndLast (list: List[Int]): (Int, Int) = {
if (list.isEmpty) (0, 0)
else if (list.size == 1) (list.head, list.head)
else if (list.size == 2)
(list.head, list.tail.head)
else
firstAndLast (list.head :: list.tail.tail)
}

它不是将头部作为单独的参数携带,而是通过将其重新附加到列表其余部分的头部,如果它长于 2。

对于空箱子的有意义的返回,我没有什么好主意。 Return Option of tuple 通常是一种方法。

关于algorithm - 使用递归查找列表的第一个和最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49147151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com