// But pattern matching also makes it easy.
def penultimateRecursive[A](ls: List[A]): A = ls match {
case h :: _ :: Nil => h
case _ :: tail => penultimateRecursive(tail)
case _ => throw new NoSuchElementException
}
Может кто-нибудь прокомментирует, что это делает построчно?
Является ли [A] универсальным, как в C #, который мы бы сделали?
h, похоже, не определен?
Я думаю, что основная часть алгоритма это рекурсивный вызов:
case _ :: tail => penultimateRecursive(tail)
Кажется, нет проверки на 2 элемента в списке, а затем взятие 1-го элемента, чтобы получить 2-й последний, запутано!