[Algorithm][์™„์ „ํƒ์ƒ‰] ์žฌ๊ท€ํ•จ์ˆ˜(Recursive Function)
ยท
Computer Science/Algorithm
์žฌ๊ท€ํ•จ์ˆ˜์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ์™„์ „ํƒ์ƒ‰ ๊ธฐ๋ฒ• ์ค‘ ํ•˜๋‚˜์ธ ์žฌ๊ท€ํ•จ์ˆ˜(Recursive Function) ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.์žฌ๊ท€ํ•จ์ˆ˜๋ž€?์žฌ๊ท€ํ•จ์ˆ˜(Recursion)๋Š” ์ •์˜ ๋‹จ๊ณ„์—์„œ ์ž์‹ ์„ ์žฌ์ฐธ์กฐํ•˜๋Š” ํ•จ์ˆ˜์ „๋‹ฌ๋˜๋Š” ์ƒํƒœ์ธ ๋งค๊ฐœ๋ณ€์ˆ˜๋งŒ ๋‹ฌ๋ผ์ง€๋ฉฐ ๋˜‘๊ฐ™์€ ์ผ์„ ํ•˜๋Š” ํ•จ์ˆ˜์–ธ์ œ ์‚ฌ์šฉํ• ๊นŒ์š”?ํฐ ๋ฌธ์ œ → ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ ์„œ ํ’€ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.์‚ฌ์šฉ์กฐ๊ฑด๋ฐ˜๋“œ์‹œ ๊ธฐ์ € ์‚ฌ๋ก€(Base Case)๋ฅผ ์จ์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์ข…๋ฃŒ ์กฐ๊ฑด)๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์—๋Š” ์žฌ๊ท€ํ•จ์ˆ˜ ํ˜ธ์ถœ๋ณด๋‹จ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (ํ•จ์ˆ˜ ํ˜ธ์ถœ์— ๋Œ€ํ•œ Cost ์ตœ์†Œํ™”)์‚ฌ์ดํด(Cycle)์ด ์žˆ์œผ๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค.ex) f(a) → f(b) ํ˜ธ์ถœํ•œ ๋’ค, f(b) → f(a)๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐโ“ ๊ธฐ์ € ์‚ฌ๋ก€(Base Case)๐Ÿ‘‰ ์žฌ๊ท€ํ•จ์ˆ˜ ์‹คํ–‰ ์ค‘์— ๋” ์ด์ƒ ์ชผ๊ฐค ์ˆ˜ ์—†๋Š” ์กฐ๊ฑด๐Ÿ‘‰ ์žฌ๊ท€ํ•จ์ˆ˜..