const longest = (xs, ys) => (xs.length > ys.length) ? xs : ys; const lcs = (xx, yy) => { if (!xx.length || !yy.length) { return ''; } const [x, ...xs] = xx; const [y, ...ys] = yy; return (x === y) ? (x + lcs(xs, ys)) : longest(lcs(xx, ys), lcs(xs, yy)); };