we're learning about recursion in school.

From what I've read online, you can optimize recursive functions by making the recursive step to be the last thing the function does.

But is the return keyword needed? Even for void functions?

```
void insert(Node<T>*& n, T value) 
{
    if (n == nullptr)
    {
        n = new Node<T>(value);
        return;
    }
    else if (value < n->get_value())
    {
        Node<T>* left = n->get_left();
        return insert(left, value);
    }
    else
    {
        Node<T>* right = n->get_right();
        return insert(right, value);
    }
}

```

Would this still be tail recursion without the return keyword?  

Specifically in the `else if`, because without it, it would "no longer be the last thing the functions does".