初始代码为:
def nth(list: List[Int], x: Int) = ???
我试着这样做:
def nth(list: List[Int], n: Int): Option[Int] = list match { case h :: t if n > 0 => nth(t, n - 1) case _ => list }
但它不起作用谢谢你帮我我试试前面的代码
bfrts1fy1#
首先,由于返回类型是Option[Int],当list的元素少于n(或者n-1,取决于n是从0开始还是从1开始)时,需要返回None,当到达nth元素时,需要返回Some。例如,简单的递归解可以如下所示(基于零的n):
Option[Int]
n
None
nth
Some
def nth(list: List[Int], n: Int): Option[Int] = list match { case h :: t if n > 0 => nth(t, n - 1) case h :: t if n == 0 => Some(h) case _ => None }
1条答案
按热度按时间bfrts1fy1#
首先,由于返回类型是
Option[Int]
,当list的元素少于n(或者n-1,取决于n
是从0开始还是从1开始)时,需要返回None
,当到达nth
元素时,需要返回Some
。例如,简单的递归解可以如下所示(基于零的
n
):