관리 메뉴

hye-_

58강 ~ 60강 | 중복 재귀함수 본문

언어/C언어_기초

58강 ~ 60강 | 중복 재귀함수

hyehh 2024. 2. 28. 09:01
728x90
반응형
SMALL
728x90
반응형
SMALL

58강 | 중복 재귀함수 (1)

자료 출처 - 깨알 C언어 | 58. 중복 재귀함수 (1) (youtube.com)


 

main()

a=3

b=2

printf ("%d\n", recur(3,2)); 함수호출 = 41

                       a=3, b=2

                       if (3<=1) 거짓 else return 3 * recur(3-1, 2+1) + recur(3-1, 2); 함수호출 = 3 * 11 + 8

오른쪽) recur(3-1, 2+1) 

             a=2, b=3          

             if (2<=1) 거짓 else return 2 * recur(2-1, 3+1) + recur(2-1, 3); 함수호출 = 2 * 4 + 3 = 11

             오른쪽) recur(2-1, 3+1) 

                          a=1, b=4

                          if (1<=1) 참 return 1 * 4 

                왼쪽) recur(2-1, 3)

                          a=1, b=3

                          if( 1<=1) 참 return 1 * 3

왼쪽) recur(3-1, 2) 

          a=2, b=2

          if (2<=1) 거짓 else return 2 * recur(2-1, 2+1) + recur(2-1, 2); 함수호출 = 2 * 3 + 2 = 8

          오른쪽) recur(2-1, 2+1)

                       a=1, b=3

                       if (1<=1) 참 return 1 * 3

              뢴쪽) recur(2-1, 2)

                       a=1, b=2

                       if (1<=1) 참 return 1 * 2

 

출력

41



59강 | 중복 재귀함수 (2)

자료 출처 - 깨알 C언어 | 59. 중복 재귀함수 (2) (youtube.com)


 

main()

a=aub(4); 함수호출 = 3

    n=4

    if(4==0) 거짓  if(4==1) 거짓  return (sub(4-1) + sub(4-2)); 함수호출  = 2 + 1

오른쪽) sub(4-1)

             n=3

             if(3==0) 거짓 if(3==1) 거짓 return (sub(3-1) + sub(3-2)); 함수호출 = 1+1

             오른쪽) sub(3-1)

                          n=2

                          if(2==0) 거짓 if(2==1) 거짓 return (sub(2-1) + sub(2-2)); 함수호출 = 1+0

                          오른쪽) sub(2-1)

                                       n=1

                                       if(1==0) 거짓 if(1==1) 참 return 1

                             왼쪽) sub(2-2)

                                       n=0

                                       if(0==0) 참 return 0     

               왼쪽) sub(3-2)

                        n=1

                        if(1==0) 거짓 if(1==1) 참 return 1

왼쪽) sub(4-2)

         n=2

         if(2==0) 거짓 if(2==1) return ( sub(2-1) + sub(2-2)); 함수호출 = 1+0

         오른쪽) sub(2-1)

                      n=1

                      if(1==0) 거짓 if(1==1) 참 return 1

             왼쪽) sub(2-2)

                      n=0

                      if(0==0) 참 return 0

 

출력

3



60강 | 중복 재귀함수 (3)

자료 출처 - 깨알 C언어 | 60. 중복 재귀함수 (3) (youtube.com)


 

main()

fib(5); 함수호출 = 5

n=5

if(5==0) 거짓 if(5==1) 거짓 return (fib(5-1)+fib(5-2)); 함수호출 = 3 + 2

오른쪽) fib(5-1)

             n=4

             if(4==0) 거짓 if(4==1) 거짓 return (fib(4-1)+fib(4-2)); 함수호출 = 2 + 1

             오른쪽) fib(4-1)

                          n=3

                          if(3==0) 거짓 if(3==1) 거짓 return (fib(3-1)+fib(3-2)); 함수호출 = 1 + 1

                          오른쪽) fib(3-1)

                                       n=2

                                       if(2==0) 거짓 if(2==1) return (fib(2-1) + fib(2-2)); 함수호출 = 1+0

                                       오른쪽) fib(2-1)

                                                    n=1

                                                    if(1==0) 거짓 if(1==1) 참 return 1

                                           왼쪽) fib(2-2)

                                                    n=0

                                                    if(0==0) 참 return 0 

                             왼쪽) fib(3-2)

                                      n=1

                                      if(1==0) 거짓 if(1==1) 참 return 1

              왼쪽) fib(4-2)

                       n=2

                       if(2==0) 거짓 if(2==1) 거짓 return (fib(2-1)+fib(2-2)); 함수호출 = 1+0

                       오른쪽) fib(2-1)

                                    n=1

                                    if(1==0) 거짓 if(1==1) return 1

                           왼쪽) fib(2-2)

                                     n=0

                                     if(0==0) 참 return 0 

왼쪽) fib(5-2)

         n=3

         if(3==0) 거짓 if(3==1) 거짓 return (fib(3-1)+fib(3-2)); 함수호출 = 1 + 1

        오른쪽) fib(3-1)

                     n=2

                     if(2==0) 거짓 if(2==1) 거짓 return (fib(2-1)+fib(2-2)); 함수호출 = 1+0

                     오른쪽) fib(2-1) 

                                  n=1

                                  if(1==0) 거짓 if(1==1) 참 return 1

                         왼쪽) fib(2-2)

                                  n=0

                                  if(0==0) 참 return 0   

            왼쪽) fib(3-2)

                      n=1

                      if(1==0) 거짓 if(1==1) 참 return 1 

 

호출되는 횟수

15


 

728x90
반응형
LIST

'언어 > C언어_기초' 카테고리의 다른 글

++ 연속으로 있을 때 처리  (0) 2024.02.28
c언어 printf 출력순서  (0) 2024.02.28
53강 ~ 57강 | 재귀함수  (0) 2024.02.28
52강 | STATIC 변수 (4)  (0) 2024.02.27
51강 | STATIC 변수 (3)  (0) 2024.02.27