#JavaScript (ES6), <s>33</s> <s>28</s> <s>25</s> 24 bytes <!-- language-all: lang-js --> n=>g=(x=n)=>--x?n*g(x):n --- ##Try It <!-- begin snippet: js hide: false console: true babel: false --> <!-- language: lang-js --> f= n=>g=(x=n)=>--x?n*g(x):n o.innerText=f(i.value=3)() i.oninput=_=>o.innerText=f(+i.value)() <!-- language: lang-html --> <input id=i min=1 type=number><pre id=o> <!-- end snippet --> --- ##History ###25 bytes f=(n,x=n)=>--x?n*f(n,x):n ###28 bytes n=>eval(1+("*"+n).repeat(n)) ###33 bytes n=>eval(Array(n).fill(n).join`*`)