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