1 / 53

D ata s tructures

D ata s tructures. 02.1: r ecursive f unctions. 동의대학교 멀티미디어공학과 이광의 교수. T oday’s t opic. 재귀함수의 예와 동작방법 계승 함수와 그 동작방법 피보나치 함수와 그 동작방법 최소공배수 함수 mathematical induction 수학적 귀납법 계승 함수의 증명 피보나치 함수의 증명 최소공배수 함수의 증명 재귀함수의 활용 징검다리 건너기 당근 캐기 거북이 옮기기. e xamples o f r ecursive f unction.

chogan
Download Presentation

D ata s tructures

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Data structures 02.1: recursivefunctions 동의대학교 멀티미디어공학과 이광의 교수

  2. Today’s topic • 재귀함수의 예와 동작방법 • 계승 함수와 그 동작방법 • 피보나치 함수와 그 동작방법 • 최소공배수 함수 • mathematical induction수학적 귀납법 • 계승 함수의증명 • 피보나치 함수의 증명 • 최소공배수 함수의 증명 • 재귀함수의 활용 • 징검다리 건너기 • 당근 캐기 • 거북이 옮기기 Dept. of Multimedia Engineering, DongEui Univ.

  3. examples of recursive function • 재귀, 재귀적 구조 그리고 재귀함수란 무엇인가? • recursion재귀: ? • recursive structure재귀적 구조: 자기 내부에 자기자신과 동일한 구조를 포함하는 구조 • recursive function재귀함수: 자기자신을 호출하는 함수 • 재귀함수의 예 • factorial function계승함수 • fibonacci sequence피보나치 수열 • greatest common divisor최대공약수 Dept. of Multimedia Engineering, DongEui Univ.

  4. examples of recursive function • n! factorial계승 함수의정의[wikipedia.org] • 계승함수는다음과 같이 정의된다. • 1! = 1; • 5! = 1*2*3*4*5 = 120; • 6! = 1*2*3*4*5*6 = 720; • 또는 재귀적으로 다음과 같이 정의된다. • 0! = 1; • 1! = 1(0!) = 1*1 = 1; • 2! = 2(1!) = 2*1 = 2; • 5! = 5(4!) = 5*4! = 5*4*3! = 5*4*3*2! = 5*4*3*2*1! = 5*4*3*2*1 = 120; Dept. of Multimedia Engineering, DongEui Univ.

  5. examples of recursive function • 계승함수의 구현 • intfactorial (int n) { // n>0intrFac (int n) { // n>0; • int f = 1; if (n==1) return 1; // if (n==0) return 1; • for (inti=1; i<=n; i++) { elsereturn n*rFac (n-1); • f = f*i; } • } • return f; void main ( ) { • } cout << rFac(3); // 6을 출력 • } Dept. of Multimedia Engineering, DongEui Univ.

  6. examples of recursive function • 계승함수의 구현 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } Dept. of Multimedia Engineering, DongEui Univ.

  7. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) {◀ • cout << rFac(3); • } 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  8. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { • cout << rFac(3);◀ if (3==1) return 1; • return 3*rFac(2); • } } 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  9. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) {◀ • cout << rFac(3);◀ if (3==1) return 1; • return 3*rFac(2); • } } 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  10. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { • cout << rFac(3);◀ if (3==1) return 1;◀ • return 3*rFac(2); • } } 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  11. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { • cout << rFac(3);◀ if (3==1) return 1; • return 3*rFac(2);◀ • } } 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  12. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { intrFac(2) { • cout << rFac(3);◀ if (3==1) return 1; if (2==1) return 1; • return 3*rFac(2);◀ return 2*rFac(1); • } } } 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  13. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { intrFac(2) {◀ • cout << rFac(3);◀ if (3==1) return 1; if (2==1) return 1; • return 3*rFac(2);◀ return 2*rFac(1); • } } } 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  14. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { intrFac(2) { • cout << rFac(3);◀ if (3==1) return 1; if (2==1) return 1;◀ • return 3*rFac(2);◀ return 2*rFac(1); • } } } 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  15. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { intrFac(2) { intrFac(1) { • cout << rFac(3);◀ if (3==1) return 1; if (2==1) return 1; if (1==1) return 1; • return 3*rFac(2);◀ return 2*rFac(1);◀ return 1*rFac(0); • } } } } 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  16. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { intrFac(2) { intrFac(1) {◀ • cout << rFac(3);◀ if (3==1) return 1; if (2==1) return 1; if (1==1) return 1; • return 3*rFac(2);◀ return 2*rFac(1);◀ return 1*rFac(0); • } } } } 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  17. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { intrFac(2) { intrFac(1) { • cout << rFac(3);◀ if (3==1) return 1; if (2==1) return 1; if (1==1) return 1;◀ • return 3*rFac(2);◀ return 2*rFac(1);◀ return 1*rFac(0); • } } } } 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  18. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { intrFac(2) { intrFac(1) { • cout << rFac(3);◀ if (3==1) return 1; if (2==1) return 1; if (1==1) return 1;◀ • return 3*rFac(2);◀ return 2*rFac(1);◀ return 1*rFac(0); • } } } } 실행과정 1 Dept. of Multimedia Engineering, DongEui Univ.

  19. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { intrFac(2) { • cout << rFac(3);◀ if (3==1) return 1; if (2==1) return 1; • return 3*rFac(2);◀ return 2*rFac(1);◀ • } } } 실행과정 1 Dept. of Multimedia Engineering, DongEui Univ.

  20. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { intrFac(2) { • cout << rFac(3);◀ if (3==1) return 1; if (2==1) return 1; • return 3*rFac(2);◀ return 2*rFac(1);◀ • } } } 실행과정 2 1 Dept. of Multimedia Engineering, DongEui Univ.

  21. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { • cout << rFac(3);◀ if (3==1) return 1; • return 3*rFac(2);◀ • } } 실행과정 2 Dept. of Multimedia Engineering, DongEui Univ.

  22. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { • cout << rFac(3);◀ if (3==1) return 1; • return 3*rFac(2);◀ • } } 실행과정 6 2 Dept. of Multimedia Engineering, DongEui Univ.

  23. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { • cout << rFac(3);◀ • } • 6이출력됨 실행과정 6 Dept. of Multimedia Engineering, DongEui Univ.

  24. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { • cout << rFac(3); • }◀ • 6이출력됨 • 프로그램 종료됨 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  25. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) {◀ • cout << rFac(3); • } main () 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  26. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { • cout << rFac(3);◀ if (3==1) return 1; • return 3*rFac(2); • } } rFac() main () 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  27. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) {◀ • cout << rFac(3);◀ if (3==1) return 1; • return 3*rFac(2); • } } rFac() N=3 main () 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  28. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { • cout << rFac(3);◀ if (3==1) return 1;◀ • return 3*rFac(2); • } } rFac() N=3 main () 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  29. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { • cout << rFac(3);◀ if (3==1) return 1; • return 3*rFac(2);◀ • } } rFac() N=3 main () 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  30. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { intrFac(2) { • cout << rFac(3);◀ if (3==1) return 1; if (2==1) return 1; • return 3*rFac(2);◀ return 2*rFac(1); • } } } rFac () rFac() N=3 main () 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  31. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { intrFac(2) {◀ • cout << rFac(3);◀ if (3==1) return 1; if (2==1) return 1; • return 3*rFac(2);◀ return 2*rFac(1); • } } } rFac () N=2 rFac() N=3 main () 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  32. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { intrFac(2) { • cout << rFac(3);◀ if (3==1) return 1; if (2==1) return 1;◀ • return 3*rFac(2);◀ return 2*rFac(1); • } } } rFac () N=2 rFac() N=3 main () 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  33. rFac () examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { intrFac(2) { intrFac(1) { • cout << rFac(3);◀ if (3==1) return 1; if (2==1) return 1; if (1==1) return 1; • return 3*rFac(2);◀ return 2*rFac(1);◀ return 1*rFac(0); • } } } } rFac () N=2 rFac() N=3 main () 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  34. rFac () examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { intrFac(2) { intrFac(1) {◀ • cout << rFac(3);◀ if (3==1) return 1; if (2==1) return 1; if (1==1) return 1; • return 3*rFac(2);◀ return 2*rFac(1);◀ return 1*rFac(0); • } } } } N=1 rFac () N=2 rFac() N=3 main () 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  35. rFac () examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { intrFac(2) { intrFac(1) { • cout << rFac(3);◀ if (3==1) return 1; if (2==1) return 1; if (1==1) return 1;◀ • return 3*rFac(2);◀ return 2*rFac(1);◀ return 1*rFac(0); • } } } } N=1 rFac () N=2 rFac() N=3 main () 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  36. rFac () examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { intrFac(2) { intrFac(1) { • cout << rFac(3);◀ if (3==1) return 1; if (2==1) return 1; if (1==1) return 1;◀ • return 3*rFac(2);◀ return 2*rFac(1);◀ return 1*rFac(0); • } } } } 1 N=1 rFac () N=2 rFac() N=3 main () 실행과정 1 Dept. of Multimedia Engineering, DongEui Univ.

  37. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { intrFac(2) { • cout << rFac(3);◀ if (3==1) return 1; if (2==1) return 1; • return 3*rFac(2);◀ return 2*rFac(1);◀ • } } } 1 rFac () N=2 rFac() N=3 main () 실행과정 1 Dept. of Multimedia Engineering, DongEui Univ.

  38. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { intrFac(2) { • cout << rFac(3);◀ if (3==1) return 1; if (2==1) return 1; • return 3*rFac(2);◀ return 2*rFac(1);◀ • } } } 1 rFac () 2 N=2 rFac() N=3 main () 실행과정 2 1 Dept. of Multimedia Engineering, DongEui Univ.

  39. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { • cout << rFac(3);◀ if (3==1) return 1; • return 3*rFac(2);◀ • } } 2 rFac() N=3 main () 실행과정 2 Dept. of Multimedia Engineering, DongEui Univ.

  40. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { intrFac(3) { • cout << rFac(3);◀ if (3==1) return 1; • return 3*rFac(2);◀ • } } 2 rFac() 6 N=3 main () 실행과정 6 2 Dept. of Multimedia Engineering, DongEui Univ.

  41. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { • cout << rFac(3);◀ • } • // 6이출력됨 6 main () 실행과정 6 Dept. of Multimedia Engineering, DongEui Univ.

  42. examples of recursive function • 계승함수의 동작 • intrFac (int n) { // n>0; • if (n==1) return 1; // if (n==0) return 1; • elsereturn n*rFac (n-1); • } • void main ( ) { • cout << rFac(3); // 6을 출력 • } • void main ( ) { • cout << rFac(3); • }◀ • // 6이출력됨 • // 프로그램 종료됨 main () 실행과정 Dept. of Multimedia Engineering, DongEui Univ.

  43. examples of recursive function • Fibonacci number피보나치수의 정의 • In mathematics, the Fibonacci numbers are the following sequence of numbers: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, … • By definition, the first two Fibonacci numbers are 0 and 1, and each remaining number is the sum of the previous two. • Some sources omit the initial 0, instead beginning the sequence with two 1s. • In mathematical terms, the sequence Fn of Fibonacci numbers is defined by the recurrence relation with seed values: Dept. of Multimedia Engineering, DongEui Univ.

  44. examples of recursive function • 피보나치 수를 계산하는 피보나치 함수의 구현 • intfibonaaci (int n) { intrF(int n) { // assume that n>=0 • intfibo[n+1]; if (n<2) return n; // if (n==0||n==1) return n; • fibo[0] = 0; else return rF(n-1)+rF(n-2); • fibo[1] = 1; } • for (inti=2; i<=n; i++) { • fibo[i] = fibo[i-1]+fibo[i-2]; void main ( ) { • } cout << rF(4); • return fibo[n]; } • } 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, … 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, … Dept. of Multimedia Engineering, DongEui Univ.

  45. examples of recursive function • 피보나치 함수의 동작 • intrF(int n) { // assume that n>=0 • if (n<2) return n; • return rF(n-1)+rF(n-2); • } • void main ( ) { • cout << rF(0); • } main () 0 0 rF(0) Dept. of Multimedia Engineering, DongEui Univ.

  46. examples of recursive function • 피보나치 함수의 동작 • intrF(int n) { // assume that n>=0 • if (n<2) return n; • return rF(n-1)+rF(n-2); • } • void main ( ) { • cout << rF(1); • } main () 1 1 rF(1) Dept. of Multimedia Engineering, DongEui Univ.

  47. examples of recursive function • 피보나치 함수의 동작 • intrF(int n) { // assume that n>=0 • if (n<2) return n; • return rF(n-1)+rF(n-2); • } • void main ( ) { • cout << rF(2); • } main () 2 1 rF(2) 1 0 rF(1) 1 rF(0) 0 Dept. of Multimedia Engineering, DongEui Univ.

  48. examples of recursive function • 피보나치 함수의 동작 • intrF(int n) { // assume that n>=0 • if (n<2) return n; • return rF(n-1)+rF(n-2); • } • void main ( ) { • cout << rF(3); • } main () 3 2 rF(3) 2 1 rF(2) 1 rF(1) 1 1 0 rF(1) 1 0 rF(0) Dept. of Multimedia Engineering, DongEui Univ.

  49. examples of recursive function • 피보나치 함수의 동작 • intrF(int n) { // assume that n>=0 • if (n<2) return n; • return rF(n-1)+rF(n-2); • } • void main ( ) { • cout << rF(4); • } main () 4 3 rF(4) 3 2 rF(3) 2 rF(2) 1 0 2 1 1 rF(2) 1 1 rF(1) rF(1) 1 rF(0) 0 1 0 rF(1) rF(0) 1 0 Dept. of Multimedia Engineering, DongEui Univ.

  50. examples of recursive function • 피보나치 함수의 동작 • intrF(int n) { // assume that n>=0 • if (n<2) return n; • return rF(n-1)+rF(n-2); • } • void main ( ) { • cout << rF(4); • } main () 6 8 rF(6) 5 4 rF(5) 5 rF(4) 3 2 4 3 3 rF(4) 3 2 rF(3) rF(3) 2 rF(2) 1 Dept. of Multimedia Engineering, DongEui Univ.

More Related