Simple Factorial Challenge
(old problem) JavaScript (Node.js), 99 94 92 88 86 83 80 78 bytes



f=(x,t=[...21+Array(999)])=&gt;x?f(s=x-1,t.map(d=&gt;-s+(s+=(t=~~d*x+t/10|0)%10))):s


Try it online!

well, first language without large number support

Thank Arnauld for 4 bytes



f = (x, t = ['2', '1', ...','.repeat(998)]) =&gt; // init x, t=1
  x ?
    f( // recursive x':=x-1, t'=t*x
      s = x-1, // s init to 0 when x==1, in next recursion just return
      t.map (
        b = // init b to NaN
        d =&gt;
          -s + ( //  to return the added value
            s+= ( // -s + (s + k) == k
              b=
                ~~d*x+b/10 | 0
                // ~~d converts ',' to 0
                // b is initally NaN, after first iteration
                // it's zero, then the last digit sum result with carry
            ) % 10
          )
      )
    )
:
  s // the sum from x==1