title: What is the point of tailrec in Kotlin?
body: <p><code>tailrec</code> optimizes functions where there is tail recursion. Why doesn't the compiler just optimize it anyway?</p>
  
  <p>C compilers optimize for tail recursion. You don't have to mark the method as having tail recursion. The compiler just notices that the last operation is recursive. And that's that.</p>
  
  <p>Why does this <em>seemingly</em> excessive keyword exist? Have I missed something? Is it purely for the convenience of the compiler, and not the user?</p>