add 递归，内联