@robpike Cool to look at, but it's a well-known first-order error term of Stirling’s formula revealing itself in base-10 notation.
My code here differs slightly from what you did to get your results, but look at the (stubborn( similarities.
(defparameter *bernoulli-coeffs*
'(-1/12 1/360 -1/1260 1/1680 -1/1188)) ; not working this out from scratch lol
(defun log-error (n &optional (terms 3))
(let ((sum 0d0) (nk n))
(dotimes (j terms)
(setf sum (+ sum (/ (float (nth j *bernoulli-coeffs*) 1d0) nk)))
(setf nk (* nk n n))) ; N, N³, N⁵, …
sum))
(defun stirling-ratio (k &optional (places 25) (terms 3))
(let* ((n (expt 10d0 k))
(ratio (exp (log-error n terms))))
(format nil "~,vF" places ratio)))
(defun show-pattern (&optional (max-k 6) (places 25) (terms 3))
(loop for k from 1 to max-k
do (format t "k = ~d ⇒ ~a~%" k
(stirling-ratio k places terms))))
Try this with (show-pattern 15 17). This is from clisp, but it should work on any common lisp.
There are people much smarter than I that can probably do this more efficiently. but this should show you why you see what you see.
Google "borrow trail" for more info about what it is.