๊ผฌ๋ฆฌ ์žฌ๊ท€ ํ•จ์ˆ˜๋Š” ๋…ํŠนํ•œ ํ˜•ํƒœ์˜ ์žฌ๊ท€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŠน์ • ํ•จ์ˆ˜ ํด๋ž˜์Šค๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์—์„œ ํ™œ์šฉ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜๊ฐ€ ์ž์‹ ์„ ํ•œ ๋ฒˆ ์ด์ƒ ํ˜ธ์ถœํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ํ‘œ์ค€ ์žฌ๊ท€์™€ ๋‹ฌ๋ฆฌ ๊ผฌ๋ฆฌ ์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ๋ณธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ์žฌ๊ท€ ํ˜ธ์ถœ ์ฒ˜๋ฆฌ๋ฅผ ์ตœ์ ํ™”ํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๊ณ  ํ•จ์ˆ˜์˜ ์ „๋ฐ˜์ ์ธ ํ™•์žฅ์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ผฌ๋ฆฌ ์žฌ๊ท€์—์„œ ์žฌ๊ท€ ํ˜ธ์ถœ์€ ํ•จ์ˆ˜ ์ •์˜์˜ ๋งˆ์ง€๋ง‰ ์ž‘์—…์ด๋ฏ€๋กœ ์šด์˜ ์ฒด์ œ๋‚˜ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์—์„œ ์ฆ๊ฐ€ํ•˜๋Š” ํ˜ธ์ถœ ์Šคํƒ์„ ์œ ์ง€ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ํšจ๊ณผ์ ์œผ๋กœ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์žฌ๊ท€ ํ˜ธ์ถœ์ด ์ด๋ฃจ์–ด์ง€์ž๋งˆ์ž ํ•จ์ˆ˜์˜ ์ปจํ…์ŠคํŠธ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ํ๊ธฐํ•  ์ˆ˜ ์žˆ๊ณ , ํ›„์† ํ˜ธ์ถœ์€ ์ž์ฒด ํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ๋ฐ ์‹คํ–‰ ์†๋„ ์ธก๋ฉด์—์„œ ๊ธฐ์กด ์žฌ๊ท€ ๋ฐฉ๋ฒ•์— ๋น„ํ•ด ๋ˆˆ์— ๋„๋Š” ์ด์ ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๋” ํฐ ๋ฌธ์ œ์™€ ๋” ๊นŒ๋‹ค๋กœ์šด ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ๋” ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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 ๊ณ ๊ฐ์—๊ฒŒ ๊ผฌ๋ฆฌ ์žฌ๊ท€๋Š” ํ™•์žฅ์„ฑ๊ณผ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜๋ฉด์„œ ๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜๊ณ  ํšจ์œจ์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์ค‘์š”ํ•œ ์ตœ์ ํ™” ๊ธฐ์ˆ ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.