RosettaCodeData/Task/Longest-common-subsequence/Scala/longest-common-subsequence-2.scala
2019-09-12 10:33:56 -07:00

7 lines
337 B
Scala

def lcsRec[T]: (IndexedSeq[T], IndexedSeq[T]) => IndexedSeq[T] = {
case (a +: as, b +: bs) if a == b => a +: lcsRec(as, bs)
case (as, bs) if as.isEmpty || bs.isEmpty => IndexedSeq[T]()
case (a +: as, b +: bs) =>
val (s1, s2) = (lcsRec(a +: as, bs), lcsRec(as, b +: bs))
if(s1.length > s2.length) s1 else s2
}