@tailrec notation