540 likes | 723 Views
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.
E N D
Data structures 02.1: recursivefunctions 동의대학교 멀티미디어공학과 이광의 교수
Today’s topic • 재귀함수의 예와 동작방법 • 계승 함수와 그 동작방법 • 피보나치 함수와 그 동작방법 • 최소공배수 함수 • mathematical induction수학적 귀납법 • 계승 함수의증명 • 피보나치 함수의 증명 • 최소공배수 함수의 증명 • 재귀함수의 활용 • 징검다리 건너기 • 당근 캐기 • 거북이 옮기기 Dept. of Multimedia Engineering, DongEui Univ.
examples of recursive function • 재귀, 재귀적 구조 그리고 재귀함수란 무엇인가? • recursion재귀: ? • recursive structure재귀적 구조: 자기 내부에 자기자신과 동일한 구조를 포함하는 구조 • recursive function재귀함수: 자기자신을 호출하는 함수 • 재귀함수의 예 • factorial function계승함수 • fibonacci sequence피보나치 수열 • greatest common divisor최대공약수 Dept. of Multimedia Engineering, DongEui Univ.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.