Chapter 02 순환 (Recursion).

Slides:



Advertisements
Similar presentations
컴퓨터와 인터넷.
Advertisements

재료수치해석 HW # 박재혁.
제14장 자기호출과 함수포인터 자기호출 함수 (Recursive Functions) 재귀적 함수 recursion
대림대학교 2017년도 1학기 강의 왕보현 순서도와 스크래치 5주차 대림대학교 2017년도 1학기 강의 왕보현
이 자료는 확인 할 수 있습니다. Python Turtle with 함수 휘문고등학교 컴퓨터부 민경현 이 자료는 확인 할 수 있습니다.
이산수학 (2012년 2학기) : 강의 소개 담당교수: 류승택 (60주년 기념관: 18407)
이산수학 논리∙명제에서 알고리즘까지 √ 원리를 알면 IT가 맛있다 ehanbit.net.
19세기 말 프랑스 수학자 Lucas가 제안 전설 Benares(베트남 하노이 외곽)에는 세계의 중심이 있고, 그 곳에는 아주 큰 사원이 있다. 이 사원에는 높이 50cm 정도 되는 다이아몬드 막대 3 개가 있다. 그 중 한 막대에는 천지 창조 때에 신이 구멍이 뚫린 64.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
컴퓨터 프로그래밍 기초 [Final] 기말고사
- 1변수 방정식의 solution 프로그램 (Bisection method, Newton-Raphson method)
Windows Server 장. 사고를 대비한 데이터 백업.
Open Graphics Library 팀 명 : Spes 송정웅 김정환
CHAP 2:순환 순천향대학교 컴퓨터공학과.
CHAP 2:순환 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
컴퓨터과학 전공탐색 배상원.
2007 1학기 11 프로젝트 기초 실습.
보고서 #5(제출기한: 10/14) 다음 문제를 해결하시오.
쉽게 풀어쓴 C언어 Express 제9장 함수와 변수 C Express.
쉽게 풀어쓴 C언어 Express 제9장 함수와 변수 C Express Slide 1 (of 33)
하노이 탑의 최단 이동 횟수 알아 보기 제주 북초등학교 6학년 심화반 임 성 찬.
Ⅲ. 이 차 방 정 식 1. 이차방정식과 그 풀이 2. 근 의 공 식.
자바 5.0 프로그래밍.
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
메모리 관리 & 동적 할당.
Ch.03 Dynamic Programming (동적 프로그래밍 or 동적 계획법)
Programming Challenge!
CHAP 2:순환.
Quiz #7 다음 수들을 합병 정렬과 퀵 정렬 알고리즘을 이용하여 오름 차순으로 정렬하였을 때, 데이터 이동 회수를 각각 구하라. 여러분은 정렬 과정을 단계별로 보이면서 이동 회수를 추적해야 한다. 단, 퀵 정렬시에 피봇으로 배열의 왼쪽 첫 번째 원소를 선택한다. 5.
제 1 장 알고리즘 : 효율, 분석, 그리고 차수.
뇌를 자극하는 Windows Server 2012 R2
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
Chapter 11 함수 활용.
CHAP 2:순환 C로 쉽게 풀어쓴 자료구조 생능출판사 Slide 1 (of 19).
보고서 (due 5/8) 다음과 같은 방식으로 문제를 해결하시오. 문제 분석 알고리즘 작성 프로그램 작성 테스트 및 검증
행렬의 개요 행렬은 수를 원소로 지니는 다차원 배열이다. mn (“m by n”) 행렬은 m개의 행과 n개의 열을 갖는다.
행렬의 개요 행렬은 수를 원소로 지니는 다차원 배열이다. mn (“m by n”) 행렬은 m개의 행과 n개의 열을 갖는다.
Hanoi Tower.
김선균 컴퓨터 프로그래밍 기초 - 7th : 함수 - 김선균
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
CHAP 2:순환 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
⊙ 이차방정식의 활용 이차방정식의 활용 문제 풀이 순서 (1)문제 해결을 위해 구하고자 하는 것을 미지수 로 정한다.
CHAP 2:순환 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
알고리즘 알고리즘이란 무엇인가?.
제 6 장 함수(functions).
에어 PHP 입문.
Chapter 1 단위, 물리량, 벡터.
5장. 선택 알고리즘.
05. General Linear List – Homework
Chapter 1 단위, 물리량, 벡터.
7주차: Functions and Arrays
CHAP 2:순환.
Homework #8 (실습 #7) [1/2] 다음을 수행하는 PHP 프로그램을 작성하여 프로그램과 결과물을 프린트하여 제출한다. sin(45º), cos(45º), tan(45º)를 출력하는 프로그램을 작성하시오. 피보나치 수를 구하는 함수 fib($n)을 작성하고,
쉽게 배우는 알고리즘 2장. 점화식과 점근적 복잡도 분석
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
Python.
I. 수와 식 1. 유리수와 순환소수.
수치해석 ch3 환경공학과 김지숙.
김선균 컴퓨터 프로그래밍 기초 - 12th : 문자열 - 김선균
교착 상태 해결 : 교착 상태 탐지 교착 상태 탐지(Deadlock Detection)
II-1 단항식의 계산 01 소인수분해 지수법칙 지수법칙 지수법칙⑴ 3개 2개 5개 3+2 m개 n개 (m+n)개 합.
7 생성자 함수.
함수 정의, void 자료형 함수 원형선언 함수 호출 변수 영역 규칙 재귀 함수
5. 1 두 수를 입력받아 큰 수를 구하는 순서도를 작성하시오
Presentation transcript:

Chapter 02 순환 (Recursion)

Contents 2. 1 순환의 소개 2. 2 거듭 제곱의 값 계산 2. 3 피보나치 수열의 계산 2. 4 하노이탑 문제

2. 1 순환의 소개 순환 (Recursion) 알고리즘이나 함수가 수행 도중에 자기 자신을 다시 호출하여 문제를 해결하는 기법 정의자체가 순환적으로 되어 있는 경우에 적합한 방법 예) 팩토리얼 (factorial) 피보나치 수열 이항계수

2. 1 순환의 소개 팩토리얼 값 구하기 정의 (n-1)! 팩토리얼을 현재 작성중인 함수를 다시 호출하여 계산 (순환 호출) 2. 1 순환의 소개 팩토리얼 값 구하기 정의 (n-1)! 팩토리얼을 현재 작성중인 함수를 다시 호출하여 계산 (순환 호출) 함수 호출 순서 factorial(5) = 5 * factorial(4)         = 5 * 4 * factorial(3) = 5 * 4 * 3 * factorial(2) = 5 * 4 * 3 * 2 * factorial(1) = 5 * 4 * 3 * 2 * 1 = 120

2. 1 순환의 소개 순환 알고리즘의 구조 순환 알고리즘은 다음과 같은 부분들을 포함 순환 호출을 하는 부분 2. 1 순환의 소개 순환 알고리즘의 구조 순환 알고리즘은 다음과 같은 부분들을 포함 순환 호출을 하는 부분 순환 호출을 멈추는 부분

2. 1 순환의 소개 순환  반복 컴퓨터에서의 되풀이 대부분의 순환은 반복으로 바꾸어 작성할 수 있음 순환 반복 2. 1 순환의 소개 순환  반복 컴퓨터에서의 되풀이 순환 (recursion): 순환 호출 이용 반복 (iteration): for나 while을 이용한 반복 대부분의 순환은 반복으로 바꾸어 작성할 수 있음 순환 순환적인 문제에서는 자연스러운 방법 함수 호출의 오버헤드 반복 수행속도가 빠르다. 순환적인 문제에 대해서는 프로그램 작성이 아주 어려울 수도 있음

2. 1 순환의 소개 팩토리얼의 반복적 구현

2. 2 거듭 제곱값 계산 거듭 제곱 프로그래밍 순환적인 방법이 반복적인 방법보다 더 효율적인 예 2. 2 거듭 제곱값 계산 거듭 제곱 프로그래밍 순환적인 방법이 반복적인 방법보다 더 효율적인 예 숫자 x의 n제곱값을 구하는 문제: xn 반복적인 방법

2. 2 거듭 제곱값 계산 거듭 제곱 프로그래밍 (Cont.) 순환적인 방법

2. 2 거듭 제곱값 계산 프로그래밍 분석 순환적인 방법의 시간 복잡도 반복적인 방법과 순환적인 방법의 비교 2. 2 거듭 제곱값 계산 프로그래밍 분석 순환적인 방법의 시간 복잡도 만약 n이 2의 제곱이라고 가정하면 다음과 같이 문제의 크기가 줄어듬 반복적인 방법과 순환적인 방법의 비교   반복적인 함수 slow_power 순환적인 함수 power 시간복잡도 O(n) O(logn) 실제수행속도 7.17초 0.47초

2. 3 피보나치 수열의 계산 피보나치 수열 순환 호출을 사용하면 비효율적인 예 순환적인 구현 2. 3 피보나치 수열의 계산 피보나치 수열 순환 호출을 사용하면 비효율적인 예 0,1,1,2,3,5,8,13,21,… 순환적인 구현

2. 3 피보나치 수열의 계산 피보나치 수열의 계산 순환 호출을 사용했을 경우의 비효율성 같은 항이 중복해서 계산됨 2. 3 피보나치 수열의 계산 피보나치 수열의 계산 순환 호출을 사용했을 경우의 비효율성 같은 항이 중복해서 계산됨 예를 들어 fib(6)을 호출하게 되면 fib(3)이 4번이나 중복되어서 계산됨 이러한 현상은 n이 커지면 더 심해짐

2. 3 피보나치 수열의 계산 피보나치 수열의 반복 구현 반복 구조를 사용한 구현

2. 4 하노이탑 문제 하노이탑 (Hanoi-tower) 문제는 막대 A에 쌓여있는 원판 n개를 막대 C로 옮기는 것 조건 2. 4 하노이탑 문제 하노이탑 (Hanoi-tower) 문제는 막대 A에 쌓여있는 원판 n개를 막대 C로 옮기는 것 조건 한 번에 하나의 원판만 이동 가능 맨 위에 있는 원판만 이동 가능 크기가 작은 원판 위에 큰 원판이 쌓일 수 없음 중간의 막대를 임시적으로 이용할 수 있으나 앞의 조건들을 지켜야 함

2. 4 하노이탑 문제 n = 3 인 경우 해답

2. 4 하노이탑 문제 일반적인 경우

2. 4 하노이탑 문제 남은 문제 어떻게 n-1개의 원판을 A에서 B로, 또 B에서 C로 이동하는가? 2. 4 하노이탑 문제 남은 문제 어떻게 n-1개의 원판을 A에서 B로, 또 B에서 C로 이동하는가? (Hint) 원래 문제가 n개의 원판을 A에서 C로 옮기는 것임을 기억 작성하고 있는 함수의 파라미터를 n-1로 바꾸어 순환 호출

2. 4 하노이탑 문제 하노이탑 프로그램 n-1개의 원판을 A에서 B로 옮기고 n번째 원판을 A에서 C로 옮긴 다음, n-1개의 원판을 B에서 C로 옮기면 됨

[ Exercises ] Chapter 02 (page. 62) 14 순환적 프로그램 17 순환 → 반복 구조 변환 14 순환적 프로그램 17 순환 → 반복 구조 변환 18 이항계수를 계산하는 순환 함수 작성 19 Ackermann 함수