The smoothing algorithm fakes normals across polygons with a linear interpolation across the triangles into which they are divided for rendering, between the vertex normals at the triangles' corners. Asking that interpolation to simulate the curvature of a surface when the triangles are very long and thin is, literally, a bit of a stretch.
To give smoothing a chance, it's better to have those triangles approach equilateral as closely as possible, and to have smooth transitions between the sizes of faces, where you want smooth transitions between interpolated normals.
Just CtrlShiftB bevelling the vertex at the point a tiny amount, CtrlB bevelling the base perimeter a bit, with 2 segments and a profile of 1, and CtrlR cutting some edge-loops around the cone, as above. gives the smoothing algorithm more to chew on:
If you're getting really fanatical, you can delete the N-gon at the tip, and CtrlF Face menu > Grid Fill it, putting a couple more edge loops in there to aid the transition:
.. and even Catmull-Clark Subdivide the result... It depends on how far you want to go.