8-2-4.Àç±Í È£Ãâ

¸Þ¼­µå´Â ¾ðÁ¦³ª ´©±¸µçÁö È£ÃâÇÒ ¼ö ÀÖ´Ù. 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ÀÌ µÉ ¶§±îÁö ¹Ýº¹ÇÏ¸é ´©½ÂÀÌ ±¸ÇØÁø´Ù.

ÀÚ±â ÀÚ½ÅÀ» È£ÃâÇÏ´õ¶óµµ Á¶°Ç¹®¿¡ ÀÇÇØ ¾ðÁ¨°¡´Â ³¡³ªµµ·Ï µÇ¾î ÀÖ¾î ¹«ÇÑ È£ÃâÀº ¾Æ´Ï´Ù. ´©½ÂÀº Àç±Í È£ÃâÀÇ °¡Àå ÀüÇüÀûÀÎ ¿¹ÀÌÁö¸¸ ²À Àç±Í È£ÃâÀÌ ¾Æ´Ï¶óµµ ±¸Çö °¡´ÉÇÏ´Ù. ±×·¯³ª µð·ºÅ͸® °èÃþ ¼øȸ³ª Æ®¸® °Ë»öó·³ º»ÁúÀûÀ¸·Î Àç±ÍÀûÀÎ ÇüŸ¦ °¡Áø ÀÚ·á ±¸Á¶¸¦ ´Ù·ê ¶§´Â Àç±Í È£ÃâÀÌ ²À ÇÊ¿äÇÏ´Ù.