Рекурсия списков Scala

 var x: List[Int]=List(1,1,2,3,5,8)
var i:Int=0
def recList(l : List[Int]) : Int = l match {
  case Nil => throw new Exception("Empty list")
  case x :: Nil => x
  case x :: xs => recList(xs)
}

Мне нужно найти последний элемент списка рекурсивным способом.Нашел вот такую функцию.Это можно как-то без case написать?Я просто только начал скалу изучать.Мне лучше просто с if.


Ответы (1 шт):

Автор решения: EnverOsmanov
def recList2(l: List[Int]): Int = {
  if (l.isEmpty) throw new Exception("Empty list")
  // head - первый элемент списка
  // tail - список без первого элемента
  else if (l.tail.isEmpty) l.head
  else recList2(l.tail)
}

val x2: List[Int] = List(1,1,2,3,5,8)
recList2(x2) // вернёт 8
→ Ссылка