»¼°j ( recursion)


C »y ¨¥ ªº ¨ç ¼Æ ¥i ¶i ¦æ »¼ °j ©I ¥s ( recursive call ) ¡A ¤] ´N ¬O »¡ ¦b ¨ç ¼Æ ¤§ ¤¤ ¥i ©I ¥s ¨ç ¼Æ ¥» ¨­ ¡C ¨ç ¼Æ ¦b ¶i ¦æ »¼°j ©I ¥s ®É ¡A ¦b ¨ä ©Ò ¨Ï ¥Î ªº ÅÜ ¼Æ ³Q °ï ¿n ¦b °ï Å| °Ï °ì ¡A ¨C ¦¸ °õ ¦æ return ±Ô ­z ¡A ¨ç ¼Æ ¦b ¸Ó ¼h ©I ¥s ¤¤ ©Ò ¨Ï ¥Î ªº ÅÜ ¼Æ ´N ±q °ï Å| ªð ¦^ ¡C

l        »¼°j¨ç¼Æ¤§¯S©Ê

(1)    ¨C ¦¸ °õ ¦æ return ±Ô ­z¡A°ÝÃD½d³òÁY¤p

(2)    ¨ã¦³¤@­Ó²×¤î»¼°j¤§±ø¥ó

µ{¦¡¹ê¨Ò: »¼°j

int   factorial(int j)

 {
         if(n==1)
            return(1);
         else
            return(n*factorial(n-1));
      }


   void main(void)
       {
          int i;
          for (i=0; i< 5; i++)
             printf("%d! = %d\n", i , factorial(i));
       }
       

   result :
               1! is 1
               2! is 2
               3! is 6
               4! is 24

l        »¼°j¨ç¼Æ¤§¤º³¡³B²z

1.      ¤@¯ë¨ç¼Æ¤§©I¥s

2.      »¼°j¨ç¼Æ¤§©I¥s

01

* =================================================== */

02

/*    µ{¦¡¹ê¨Ò:¨Ï¥Î¦C¦L°}¦C¨ç¼Æ»¡©ú»¼°j¨ç¼Æ¤§©I¥s     */

03

/* ================================================== */

04

 

05

int list[6] = { 1, 2, 3, 4, 5, 6 };                /* °}¦C¤º®e    */

06

 

07

/* ----------------------------------------------------------------------------------- */

08

/*               »¼°j°}¦C¤Ï¦V¦C¦L¨ç¼Æ                        */

09

/* ----------------------------------------------------------------------------------- */

10

void invert_array(int j)

11

{

12

if ( j < 6 )                     /* ²×¤î±ø¥ó     */

13

      {    /* »¼°j¦ê¦C¦C¦L¨ç¼Æ©I¥s */

14

                 invert_array(j + 1);

15

          printf("[%d]",list[j]);       /* ¦C¦L¤¸¯À¸ê®Æ */

16

             }

17

}

18

/* ----------------------------------------------------------------------------------- */

19

/*               ¥Dµ{¦¡: ¤Ï¦V¦C¦L°}¦C¤º®e.                    */

20

/* ----------------------------------------------------------------------------------- */

21

void main()

22

{

23

  int i;

24

 

25

printf("°}¦Cªº¤º®e:\n");

26

  for ( i= 0;  i < 6 ; i++)

27

        printf("[%d]",list[i]);         /* ¦C¦L¤¸¯À¸ê®Æ */

28

   printf("\n");                       /* ´«¦æ         */

29

   printf("»¼°j¦C¦L°}¦Cªº¤º®e:\n");

30

   invert_array(0);                 /* ©I¥s¦C¦L¨ç¼Æ */

31

  printf("\n");                    /* ´«¦æ        */

32

}

 

    µ{¦¡¹ê¨Ò:  ¶O³Õ¥§¦è¼Æ¦C

 long  fib(int n)

{

 if (n <=2)

     return (1);

   return (fib( n-2) + fib(n-1));

}

 

Fib¨ç¼Æ°õ¦æ­pºâ¹Lµ{

 


¦^¸ê®Æµ²ºc±Ð¾Ç¤jºõ      ¤U¤@³æ¤¸