#JavaScript (ES6), 25 bytes
Takes input as (k)(n).
k=>g=n=>n>k?n*g(n-k):n|!n Or 26 bytes to support BigInts.
#JavaScript (ES6), 59 bytes
Takes input as a string, using the format described in the challenge.
s=>(a=s.split`!`,k=a.length,g=n=>n*=n<k||g(n-k+1))(a[0])||1