¸Þ¼µå´Â ¾ðÁ¦³ª ´©±¸µçÁö È£ÃâÇÒ ¼ö ÀÖ´Ù. main¿¡¼¸¸ È£ÃâÇÏ´Â
°ÍÀÌ ¾Æ´Ï¶ó ¸Þ¼µå³¢¸® ¼·Î È£ÃâÇÏ¿© ÀÛ¾÷À» ºÐ´ã½ÃŲ´Ù. main¿¡¼
methodA¸¦ È£ÃâÇÏ°í methodA´Â ½ÇÇàÁß¿¡ ´Ù½Ã
methodB¸¦ È£ÃâÇÏ´Â ½ÄÀ¸·Î È£Ãâ ´Ü°è´Â ¾ó¸¶µçÁö ±í¾îÁú ¼ö ÀÖ´Ù.
È£ÃâÀ» ¹ÞÀº ¸Þ¼µå´Â ÀÛ¾÷À» ¸¶Ä£ ÈÄ Á¤È®ÇÏ°Ô ¿ø·¡ À§Ä¡·Î µ¹¾Æ¿Â´Ù. ÀÌ·±
½ÄÀ¸·Î ¸Þ¼µå³¢¸® Àμö¸¦ Àü´ÞÇÏ°í ¸®ÅÏ°ªÀ» ¹ÝȯÇÏ´Â ½ÄÀ¸·Î ÁÖ°Å´Ï ¹Þ°Å´Ï Åë½ÅÇÏ¸é¼ ÀÛ¾÷À» ó¸®ÇÑ´Ù. °¢
¸Þ¼µå°¡ ¼¼ºÎ ÀÛ¾÷À» ´ã´çÇϹǷΠmainÀº ¼ø¼¿¡ ¸Â°Ô ¸Þ¼µå¸¦ È£ÃâÇÏ¿© ÀüüÀûÀÎ È帧¸¸ °üÀåÇÏ¸é µÈ´Ù.
¸Þ¼µå È£ÃâÀÇ Æ¯¼öÇÑ ¿¹´Â ÀڱⰡ ÀÚ½ÅÀ» ´Ù½Ã È£ÃâÇÏ´Â Àç±Í È£ÃâÀÌ´Ù. ¸Þ¼µå³¢¸®
¼·Î È£ÃâÇÏ´Â °Í »Ó¸¸ ¾Æ´Ï¶ó ÀÚ±â ÀÚ½ÅÀ» È£ÃâÇÒ ¼öµµ ÀÖ´Ù. Å« ¹®Á¦¸¦ Àß°Ô ³ª´©¾î Á¡ÁøÀûÀ¸·Î ÇØ°áÇÏ´Â
±â¹ý(Divide & conquer)À¸·Î Á¾Á¾ »ç¿ëµÈ´Ù. Àç±Í
È£ÃâÀÇ °¡Àå ´ëÇ¥ÀûÀÎ ¿¹´Â ´©½ÂÀ» ±¸ÇÏ´Â °ÍÀε¥ °£´ÜÇÑ ¿¹Á¦·Î ±¸°æ¸¸ ÇØ º¸ÀÚ.
recursive |
½ÇÇà°á°ú |
class JavaTest { public
static void main(String[] args) { System.out.println("5
ÆÑÅ丮¾ó = " + factorial(5)); } static
int factorial(int n) { if
(n <= 1) { return
1; }
else { return
n * factorial(n - 1); } } } |
5 ÆÑÅ丮¾ó = 120 |
´©½Â n!Àº 1~nÀÇ °öÀ»
±¸ÇÏ´Â ¿¬»êÀ¸·Î Á¤ÀǵǾî ÀÖ´Ù. n!Àº n*(n-1)!·Î
´õ Àß°Ô ³ª´ ¼ö ÀÖÀ¸¸ç 1!Àº ´õ º¼ °Íµµ ¾øÀÌ 1ÀÌ´Ù. ÀÌ Á¡À» È°¿ëÇÏ¿© factorial ¸Þ¼µå´Â Àμö·Î Àü´Þ¹ÞÀº nÀÌ 1ÀÌ ¾Æ´Ï¸é n°ú (n-1)!·Î ¹®Á¦¸¦ ºÐÇÒÇÏ¿© ÀÚ±â ÀÚ½ÅÀ» ´Ù½Ã È£ÃâÇÑ´Ù. ÀμöÀÇ
°ªÀ» Çϳª¾¿ ÁÙ¿© 1ÀÌ µÉ ¶§±îÁö ¹Ýº¹ÇÏ¸é ´©½ÂÀÌ ±¸ÇØÁø´Ù.
ÀÚ±â ÀÚ½ÅÀ» È£ÃâÇÏ´õ¶óµµ Á¶°Ç¹®¿¡ ÀÇÇØ ¾ðÁ¨°¡´Â ³¡³ªµµ·Ï µÇ¾î ÀÖ¾î ¹«ÇÑ È£ÃâÀº ¾Æ´Ï´Ù. ´©½ÂÀº Àç±Í È£ÃâÀÇ °¡Àå ÀüÇüÀûÀÎ ¿¹ÀÌÁö¸¸ ²À Àç±Í È£ÃâÀÌ ¾Æ´Ï¶óµµ ±¸Çö °¡´ÉÇÏ´Ù. ±×·¯³ª µð·ºÅ͸® °èÃþ ¼øȸ³ª Æ®¸® °Ë»öó·³ º»ÁúÀûÀ¸·Î Àç±ÍÀûÀÎ ÇüŸ¦ °¡Áø ÀÚ·á ±¸Á¶¸¦ ´Ù·ê ¶§´Â Àç±Í È£ÃâÀÌ
²À ÇÊ¿äÇÏ´Ù.