๊ผฌ๋ฆฌ ์ฌ๊ท ํจ์๋ ๋ ํนํ ํํ์ ์ฌ๊ท๋ฅผ ๋ํ๋ด๋ ์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ์ ํน์ ํจ์ ํด๋์ค๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด๋ ๋ง์ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์์ ํ์ฉ๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํจ์๊ฐ ์์ ์ ํ ๋ฒ ์ด์ ํธ์ถํ๋ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ์ ์ ๋๋ค. ํ์ค ์ฌ๊ท์ ๋ฌ๋ฆฌ ๊ผฌ๋ฆฌ ์ฌ๊ท๋ฅผ ์ฌ์ฉํ๋ฉด ๊ธฐ๋ณธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์ฌ๊ท ํธ์ถ ์ฒ๋ฆฌ๋ฅผ ์ต์ ํํ์ฌ ๋ฆฌ์์ค ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ณ ํจ์์ ์ ๋ฐ์ ์ธ ํ์ฅ์ฑ๊ณผ ์ฑ๋ฅ์ ๋์ผ ์ ์์ต๋๋ค.
๊ผฌ๋ฆฌ ์ฌ๊ท์์ ์ฌ๊ท ํธ์ถ์ ํจ์ ์ ์์ ๋ง์ง๋ง ์์ ์ด๋ฏ๋ก ์ด์ ์ฒด์ ๋ ๋ฐํ์ ํ๊ฒฝ์์ ์ฆ๊ฐํ๋ ํธ์ถ ์คํ์ ์ ์ง ๊ด๋ฆฌํ ํ์๊ฐ ํจ๊ณผ์ ์ผ๋ก ์ ๊ฑฐ๋ฉ๋๋ค. ์ฌ๊ท ํธ์ถ์ด ์ด๋ฃจ์ด์ง์๋ง์ ํจ์์ ์ปจํ ์คํธ๋ฅผ ์์ ํ๊ฒ ํ๊ธฐํ ์ ์๊ณ , ํ์ ํธ์ถ์ ์์ฒด ํ๊ฒฝ์์ ์งํ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ๋ฐ ์คํ ์๋ ์ธก๋ฉด์์ ๊ธฐ์กด ์ฌ๊ท ๋ฐฉ๋ฒ์ ๋นํด ๋์ ๋๋ ์ด์ ์ ์ ๊ณตํ๋ฏ๋ก ํ๋ก๊ทธ๋๋จธ๋ ๋ ํฐ ๋ฌธ์ ์ ๋ ๊น๋ค๋ก์ด ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค.
AppMasterno-code ํ๋ซํผ์ ๋ง์ถคํ ๊ธฐ๋ฅ ์ค๊ณ์ ํต์ฌ ๊ธฐ๋ฅ์ผ๋ก ๊ผฌ๋ฆฌ ์ฌ๊ท๋ฅผ ํตํฉํ์ฌ ์ด์์ ๊ฐ์ํํ๊ณ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ ์ ์ฌ๋ ฅ์ ํ์ฉํฉ๋๋ค. ์ด๋ ์๋ฏผ ๊ฐ๋ฐ์์ ์ ๋ฌธ๊ฐ ๋ชจ๋๊ฐ ๋น์ฆ๋์ค ๋ฐ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํด ํ๋ ์์ํฌ์ ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์๋ AppMaster ์ํ๊ณ ๋ด์์ ๊ฐ๋ ฅํ๊ณ ํจ์จ์ ์ด๋ฉฐ ํ์ฅ ๊ฐ๋ฅํ ์ํํธ์จ์ด ์๋ฃจ์ ์ ๋ง๋๋ ๋ฐ ํนํ ์ค์ํฉ๋๋ค.
AppMaster ์ ๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ํนํ Go ํ๋ก๊ทธ๋๋ฐ ์ธ์ด(golang) ๋ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ฉ JavaScript/TypeScript๋ฅผ ์ฌ์ฉํ๋ ๊ตฌํ์์ ๊ผฌ๋ฆฌ ์ฌ๊ท๋ฅผ ๊ด๋ฒ์ํ๊ฒ ํ์ฉํฉ๋๋ค. ์ด๋ฌํ ํ๊ฒฝ์๋ ์ผ๋ฐ์ ์ผ๋ก TCO(ํ ์ผ ํธ์ถ ์ต์ ํ)๋ผ๊ณ ํ๋ ๊ผฌ๋ฆฌ ์ฌ๊ท ์ต์ ํ์ ๋ํ ์ง์์ด ๊ธฐ๋ณธ์ ์ผ๋ก ํฌํจ๋์ด ์์ต๋๋ค. ์ด ์ปดํ์ผ ์๊ฐ ์ต์ ํ๋ ์ฃผ๋ก ์ฌ๊ท ํจ์ ํธ์ถ์ด ์ด๋ฃจ์ด์ง ๋ ๋ฉ๋ชจ๋ฆฌ์ ํธ์ถ ์คํ ํฌ๊ธฐ๊ฐ ์ผ์ ํ๊ฒ ์ ์ง๋๋๋ก ๋ณด์ฅํ์ฌ ๋ ๋์ ๋ฆฌ์์ค ๊ด๋ฆฌ๋ฅผ ์ ๊ณตํ๊ณ ์คํ ์ค๋ฒํ๋ก ์ค๋ฅ์ ์ํ์ ์ค์ ๋๋ค.
๊ผฌ๋ฆฌ ์ฌ๊ท ํจ์์ ์ ํ์ ์ธ ์ ์ค ํ๋๋ ๊ณ์น ๊ณ์ฐ์ ๋๋ค. ๊ณ์น ํจ์ `n! =n * (n-1) * (n-2) * ... * 1`, ๊ณ ์ ์ ์ธ ๊ณ์น ์ฌ๊ท ๊ตฌํ์๋ ์ผ๋ จ์ ๊ณฑ์ ์ด ํฌํจ๋๋ฉฐ ๊ฐ ๊ณฑ์ ์ ์ฌ๊ท๊ฐ ๊ธฐ๋ณธ์ ๋๋ฌํ ๋๊น์ง ๋ฉ๋ชจ๋ฆฌ์ ์ ์ง๋์ด์ผ ํฉ๋๋ค. ๊ฒฝ์ฐ(์ ๋ ฅ 1). ๊ทธ๋ฌ๋ ๊ณ์น ํจ์์ ๊ผฌ๋ฆฌ ์ฌ๊ท ๋ฒ์ ์๋ ์ฌ๊ท๋ฅผ ์ํํ๋ ๋์ ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ถ๊ฐ ๋์ฐ๊ธฐ ๋งค๊ฐ๋ณ์๊ฐ ๋์ ๋์ด ํจ์๊ฐ ์งํ๋๋ฉด์ ์ด์ ์ปจํ ์คํธ๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์๊ณ ๋ฆฌ์ฆ์ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์คํ๋์ด ๋ฆฌ์์ค ์ฌ์ฉ์ ์ต์ ํํ๊ณ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๋ค์์ ๊ผฌ๋ฆฌ ์ฌ๊ท ๊ณ์น ํจ์์ ์์ฌ ์ฝ๋ ์์ ๋๋ค.
ํจ์ tail_factorial(n, ๋์ฐ๊ธฐ = 1) {
if (n == 1) ๋์ฐ๊ธฐ๋ฅผ ๋ฐํํฉ๋๋ค.
tail_factorial(n - 1, ๋์ฐ๊ธฐ * n)์ ๋ฐํํฉ๋๋ค.
}
๊ผฌ๋ฆฌ ์ฌ๊ท์ ์ต์ ํ ๊ฐ๋ฅ์ฑ์ ๊ณ์น์๋ง ๊ตญํ๋์ง ์์ต๋๋ค. ๋ค๋ฅธ ์ผ๋ฐ์ ์ธ ์๋ก๋ ํผ๋ณด๋์น ์ ๊ณ์ฐ, Ackermann ํจ์ ๋ฐ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ํธ๋ฆฌ ์ํ ์๊ณ ๋ฆฌ์ฆ์ด ์์ต๋๋ค. ๋ ๋์ ๊ด์ ์์ ๋ณด๋ฉด ๊ฑฐ์ ๋ชจ๋ ์ฌ๊ท ํจ์๋ฅผ ๊ผฌ๋ฆฌ ์ฌ๊ท ๋ฒ์ ์ผ๋ก ๋ณํํ์ฌ ์ด์ ์ ๊ทน๋ํํ ์ ์์ผ๋ฏ๋ก AppMasterno-code ํ๋ซํผ์ ๋ค์ํ ์ฌ์ฉ ์ฌ๋ก์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ ๊ฑธ์ณ ๋น๊ตํ ์ ์๋ ํจ์จ์ฑ๊ณผ ํ์ฅ์ฑ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
๊ผฌ๋ฆฌ ์ฌ๊ท ๊ธฐ๋ฅ์ด ์ฌ์ฉ์ ์ ์ ๊ธฐ๋ฅ์ ํ์์ ์ธ ๋ถ๋ถ์ด ๋๋ฉด์ AppMaster ํ๋ซํผ์ ๋ ๋ง์ ๊ธฐ์ ๊ณผ ๊ฐ๋ฐ์๊ฐ ํ๋ซํผ์ no-code ๊ธฐ๋ฅ์ ์ฑํํจ์ ๋ฐ๋ผ ์ํฐํ๋ผ์ด์ฆ ๋ฐ ๊ณ ๋ถํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์ฆ๊ฐํ๋ ์๊ตฌ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ์ญ๋์ ์ง์์ ์ผ๋ก ํฅ์์ํต๋๋ค. AppMaster ์ ์ฐํ๊ณ ๊ฐ๋ ฅํ ์๊ฐ์ ํธ์ง๊ธฐ๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๊ฐ์ํํ๊ธฐ ์ํด ํน๋ณํ ์ ์๋ ๊ฐ๋ ฅํ๊ณ ํฌ๊ด์ ์ธ ํ๊ฒฝ์ ์ ๊ณตํ์ฌ 10๋ฐฐ ๋ ๋น ๋ฅด๊ณ 3๋ฐฐ ๋ ๋น์ฉ ํจ์จ์ ์ ๋๋ค. AppMaster ๊ณ ๊ฐ์๊ฒ ๊ผฌ๋ฆฌ ์ฌ๊ท๋ ํ์ฅ์ฑ๊ณผ ์์ ์ฑ์ ๋ณด์ฅํ๋ฉด์ ๋ณด๋ค ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ณ ํจ์จ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๊ฒ ํด์ฃผ๋ ์ค์ํ ์ต์ ํ ๊ธฐ์ ์ ๋ํ๋ ๋๋ค.