The function f is defined only for integers greater or equal to 1, however Plot can sample any real coordinate in the plot range, which leads to a recursion similarly to f[1.].
Perhaps DiscretePlot[f[n], {n, 1, 5}] is more appropriate.
Plot passes real numbers (head Real) to f. Try evaluating f[0.5]. You might want to try DiscretePlot. It would also be a good idea to define f[n_]... with
Your post hadn’t shown up when I posted mine, at least in my browser, or I wouldn’t have answered. Not sure why it didn’t since yours was ~2 hrs before mine.