°è½Â(Factorial)°ú °ÅµìÁ¦°ö(Power)¸¦ °°ÀÌ ¼Ò°³ÇÏ´Â ÀÌÀ¯´Â ÀÌ µÎ ¾Ë°í¸®Áò¿¡¼­ °øÅëÀûÀ¸·Î ÇÔ¼öÀÇ Àç±Í(ȤÀº ¼øÈ¯)°¡ »ç¿ëµÇ±â ¶§¹®ÀÌ´Ù. Àç±Í(Recursion)´Â ÇÔ¼ö³»¿¡¼­ ÇÔ¼ö ÀÚ½ÅÀ» È£ÃâÇÏ´Â °æ¿ì¸¦ ¸»ÇÑ´Ù. ÁַΠƯÁ¤ÇÑ ÀÛ¾÷À» ¹Ýº¹ÀûÀ¸·Î ¼öÇàÇØ¾ß µÇ´Â °æ¿ì¿¡ À¯¿ëÇÏ°Ô »ç¿ëµÈ´Ù.


  // power.c : Àç±Í(Recursion)¸¦ ÀÌ¿ëÇÑ °ÅµìÁ¦°ö(Power)ÀÇ °è»ê
  // °ÅµìÁ¦°öÀÇ °è»êÀº °°Àº ¼ö¸¦ Áö¼ö¹ø °öÇØ ÁÖ¸é µÇ±â ¶§¹®¿¡
  // Àç±Í¸¦ ÀÌ¿ëÇØ¼­ Áö¼ö¹ø Ƚ¼ö¸¸Å­ ÇÔ¼ö¸¦ È£ÃâÇØ Áָ鼭 °öÇØÁÖ¸é µË´Ï´Ù. 
 
  #include <stdio.h>
 
  long int power(int x, int n);
 
  void main()
  {
          int num, sup;
          long int value;
 
          printf("°ÅµìÁ¦°öÀ» °è»êÇÏ´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù.\n");
          printf("Á¤¼ö°ªÀ» ÀÔ·ÂÇØ ÁÖ¼¼¿ä : ");
          scanf("%d", &num);
          printf("Áö¼ö°ªÀ» ÀÔ·ÂÇØ ÁÖ¼¼¿ä : ");
          scanf("%d", &sup);
 
          value = power(num, sup);
 
          printf("Á¤¼ö %dÀÇ %d½ÂÀÇ °ªÀº %ldÀÔ´Ï´Ù.\n", num, sup, value);
  }
 
  long int power(int x, int n)
  {
          if(!n)
                  return 1;
          else 
                  return x * power(x, n-1);
  }


  // factorial.c : Àç±Í(Recursion)¸¦ ÀÌ¿ëÇÑ °è½Â(factorial)ÀÇ °è»ê
  // °è½ÂÀº ÀÚ¿¬¼ö¿¡ ´ëÇØ¼­¸¸ ÇØ´çµÇ±â ¶§¹®¿¡ ºÎÈ£¾ø´Â Á¤¼öÇüÀ¸·Î Á¦ÇÑÀ» Çß¾î¿ä.
  // °è½Â¿¡¼­´Â ÀԷ¹ÞÀº Á¤¼ö¿¡¼­ 1¸¸Å­¾¿ ÀÛÀº ¼ö¸¦ Àμö·Î ÇØ¼­
  // Àç±Í¸¦ »ç¿ëÇÏ¿© ÇÔ¼ö¸¦ È£ÃâÇϸ鼭 °öÇØÁÖ¸é µË´Ï´Ù. 
 
  #include <stdio.h>
 
  unsigned long factorial(unsigned int n);
 
  void main()
  {
          int num;
          unsigned long value;
 
          printf("Á¤¼önÀÇ °è½ÂÀ» °è»êÇÏ´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù.\n");
          printf("Á¤¼ö(n)À» ÀÔ·ÂÇØ ÁÖ¼¼¿ä : ");
          scanf("%d", &num);
          
          value = factorial(num);
 
          printf("%d!ÀÇ °ªÀº %ldÀÔ´Ï´Ù.\n", num, value);
  }
 
  unsigned long factorial(unsigned int n)
  {
          if( n == 1)
                  return 1;
          else
          {
                  n *= factorial ( n - 1);
                  return n;
          }
  }