Если задача звучит именно так, то она сводится к нахождению угла между векторами (см. скалярное произведение векторов):
const getScalarProduct = ([xA, ...restA], [xB, ...restB]) =>
(restA.length === 0 || restB.length === 0)
? xA * xB
: xA * xB + getScalarProduct(restA, restB)
const getSquareModule = ([x, ...rest]) =>
(rest.length === 0)
? x * x
: x * x + getSquareModule(rest)
const getModule = (A) => Math.sqrt(getSquareModule(A))
const getCosOfAngle = (A, B) => getScalarProduct(A, B) / (getModule(A) * getModule(B))
getCosOfAngle([1, 0],[0, 1]) - двумерный случай, но можно находить угол для любой размерности
P.S.: код на
JavaScript, функция
getCosOfAngle возвращает косинус угла