CHAP 2:순환 2016. 3. 17 순천향대학교 컴퓨터공학과.

Slides:



Advertisements
Similar presentations
이진 나무 구조 강윤섭 2008년 5월 23일.
Advertisements

재료수치해석 HW # 박재혁.
Recursion SANGJI University KO Kwangman
제14장 자기호출과 함수포인터 자기호출 함수 (Recursive Functions) 재귀적 함수 recursion
이산수학 (2012년 2학기) : 강의 소개 담당교수: 류승택 (60주년 기념관: 18407)
이산수학 논리∙명제에서 알고리즘까지 √ 원리를 알면 IT가 맛있다 ehanbit.net.
19세기 말 프랑스 수학자 Lucas가 제안 전설 Benares(베트남 하노이 외곽)에는 세계의 중심이 있고, 그 곳에는 아주 큰 사원이 있다. 이 사원에는 높이 50cm 정도 되는 다이아몬드 막대 3 개가 있다. 그 중 한 막대에는 천지 창조 때에 신이 구멍이 뚫린 64.
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
컴퓨터 프로그래밍 기초 [Final] 기말고사
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
쉽게 풀어쓴 C언어 Express 제9장 함수와 변수 C Express.
Open Graphics Library 팀 명 : Spes 송정웅 김정환
CHAP 1:자료구조와 알고리즘 순천향대학교 컴퓨터공학과 하 상 호.
Chapter 02 순환 (Recursion).
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
CHAP 2:순환 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
컴퓨터과학 전공탐색 배상원.
보고서 #5(제출기한: 10/14) 다음 문제를 해결하시오.
쉽게 풀어쓴 C언어 Express 제9장 함수와 변수 C Express.
쉽게 풀어쓴 C언어 Express 제9장 함수와 변수 C Express Slide 1 (of 33)
9장. 특징 선택 오일석, 패턴인식, 교보문고, © 오일석, 전북대학교 컴퓨터공학.
하노이 탑의 최단 이동 횟수 알아 보기 제주 북초등학교 6학년 심화반 임 성 찬.
CHAP 10:그래프 (2) 순천향대학교 하상호.
어서와 C언어는 처음이지 제14장.
CHAP 9: 정렬 순천향대학교 컴퓨터학부 하 상 호.
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
Ch.03 Dynamic Programming (동적 프로그래밍 or 동적 계획법)
Report #3 - due: 4/6 100*100의 2개의 희소 행렬 A, B를 전달 받아서 이들의 덧셈을 구하고, 그 결과의 행렬 C를 반환하는 add_sparse_matrix(A, B, C)를 다음과 같이 작성하라. 희소 행렬은 sparse_matrix 타입으로 표현된다.
CHAP 2:순환.
Quiz #7 다음 수들을 합병 정렬과 퀵 정렬 알고리즘을 이용하여 오름 차순으로 정렬하였을 때, 데이터 이동 회수를 각각 구하라. 여러분은 정렬 과정을 단계별로 보이면서 이동 회수를 추적해야 한다. 단, 퀵 정렬시에 피봇으로 배열의 왼쪽 첫 번째 원소를 선택한다. 5.
다음 주 과제 3장 읽어오기 숙제 해서 제출하기. 자료구조와 알고리즘, 순환 E304호,
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
Chapter 11 함수 활용.
10장 부프로그램 구현 순천향대학교 컴퓨터공학과 하 상 호.
CHAP 2:순환.
CHAP 2:순환 C로 쉽게 풀어쓴 자료구조 생능출판사 Slide 1 (of 19).
제 1 강.
행렬의 개요 행렬은 수를 원소로 지니는 다차원 배열이다. mn (“m by n”) 행렬은 m개의 행과 n개의 열을 갖는다.
행렬의 개요 행렬은 수를 원소로 지니는 다차원 배열이다. mn (“m by n”) 행렬은 m개의 행과 n개의 열을 갖는다.
CHAP 2:순환 순천향대학교 컴퓨터공학과.
Hanoi Tower.
김선균 컴퓨터 프로그래밍 기초 - 7th : 함수 - 김선균
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
CHAP 2:순환 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
CHAP 2:순환 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
알고리즘 알고리즘이란 무엇인가?.
제 6 장 함수(functions).
하나의 商행위에 같은 번호의 영수증이 두 개가 발급되었으며, 각 영수증의 발행시각 하차시각 승차거리 가 서로 다르다.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
5장. 선택 알고리즘.
7주차: Functions and Arrays
CHAP 2:순환.
재귀 reccurssion.
Homework #8 (실습 #7) [1/2] 다음을 수행하는 PHP 프로그램을 작성하여 프로그램과 결과물을 프린트하여 제출한다. sin(45º), cos(45º), tan(45º)를 출력하는 프로그램을 작성하시오. 피보나치 수를 구하는 함수 fib($n)을 작성하고,
쉽게 배우는 알고리즘 2장. 점화식과 점근적 복잡도 분석
Python.
3장 (2) 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
II-1 단항식의 계산 01 소인수분해 지수법칙 지수법칙 지수법칙⑴ 3개 2개 5개 3+2 m개 n개 (m+n)개 합.
강의 #3. 순환(Recursion).
꽃잎의 수로 피보나치 수열하기 장전초등학교 6학년 신찬유.
함수 정의, void 자료형 함수 원형선언 함수 호출 변수 영역 규칙 재귀 함수
피보나치수열에 대하여 한림초 5학년 신동오.
5. 1 두 수를 입력받아 큰 수를 구하는 순서도를 작성하시오
Presentation transcript:

CHAP 2:순환 2016. 3. 17 순천향대학교 컴퓨터공학과

순환(recursion)이란? 순환은 알고리즘이나 함수가 수행 도중에 자기 자신을 다시 호출하여 문제를 해결하는 기법 문제나 자료구조가 순환적으로 정의되는 경우, 알고리즘을 순환적으로 표현하는 것이 적합 예제: 정수의 팩토리얼 정의 Factorial 알고리듬 재귀적 정의

순환 알고리즘의 구조 순환 알고리즘은 다음과 같은 부분들을 포함한다. 만약 순환 호출을 멈추는 부분이 없다면?. 순환 호출을 하는 부분 else return n * factorial(n-1); int factorial(int n) { 순환을 멈추는 부분 순환호출을 하는 부분 } if( n <= 1 ) return 1 만약 순환 호출을 멈추는 부분이 없다면?.

순환 vs. 반복 대부분의 순환은 반복 버전으로 표현할 수 있고, 모든 반복은 순환 버전으로 표현할 수 있다. 순환 반복 순환적인 문제에서는 매우 자연스러운 방법 비효율적 반복 수행속도가 빠르다. 순환적인 문제에 대해서는 프로그램 작성이 아주 어려울 수도 있다.

순환 vs. 반복 팩토리얼 함수를 정의하라. 팩토리얼 함수 fact(n)을 알고리즘으로 작성하라. n! = 1 if n = 0 n*(n-1)*(n-2)*….*1 if n>0 팩토리얼 함수 fact(n)을 알고리즘으로 작성하라. Factorial 순환 버전 Factorial 반복 버전

Quiz 다음 함수를 sub(10)으로 호출시에 어떤 값이 반환되는가? int sub(int n) { if ( n < 0) return 0; return n + sub(n-3); }

예제: 거듭제곱  

예제: 거듭제곱  

예제: 거듭제곱 power(), power2()의 알고리즘 복잡도 비교 구분 Power1 Power2 알고리즘 시간복잡도

예제: 피보나치 수열 피보나치 수열 정의 0,1,1,2,3,5,8,13,21,… fib(n)의 알고리즘을 작성하라.

예제: 피보나치 수열 피보나치 순환 알고리즘은 어떻게 동작하는가? 이 알고리즘은 효율적인가? n= 6인 경우를 고려 fib(6) fib(4) fib(5) fib(2) fib(3) fib(3) fib(4) fib(1) fib(0) fib(1) fib(2) fib(1) fib(2) fib(2) fib(3)

예제: 피보나치 수열 fib(7)이 호출될 경우에, fib(4)는 몇 번이나 중복 계산되는가?

예제: 피보나치 수열 알고리즘 반복 버전

예제: 피보나치 수열 알고리즘 복잡도 비교 구분 반복 버전 순환 버전 알고리즘 시간복잡도

예제: Hanoi 탑 문제 기원 1883년 프랑스 수학자 Edouard Lucas에 의해서 소개 옛날에 인도의 Kashi Vihswanath에 있는 브라만교 대사원에 하노이 탑이 있었고, 이 탑에는 3개의 다이어몬드 기둥과 그 한 기둥에 순금 원판 64개가 쌓아 있었다고 한다. 신이 브라만 승려들에게 다음 원칙으로 원판을 옮기라고 하였고, 원판은 한번에 한 개씩만 옮긴다 작은 원판 위에 큰 원판을 올려놓을 수 없다 64개의 원판이 다른 원판에 모두 옮겨졌을 때, 세상의 종말이 온다고 하였고, 승려들은 아직까지도 옮기고 있다고 함 http://en.wikipedia.org/wiki/Tower_of_Hanoi 웹 사이트: http://vornlocher.de/tower.html 스마트폰 어플: Tower of Hanoi

예제: Hanoi 탑 문제 A B C 문제 가정 문제 각 원판의 크기는 다르다. 한번에 하나의 원판만 이동 가능 크기가 작은 원판 위에 큰 원판을 쌓는 것 불가 위의 조건을 충족하면서 막대 A상의 모든 원판을 막대 C로 이동하는 알고리듬을 작성하라. A B C 가정 문제

예제: Hanoi 탑 문제 원판의 개수가 3인 경우 A B C

예제: Hanoi 탑 문제 원판의 개수가 n인 경우 A B C n-1개의 원판 1개의 원판

예제: Hanoi 탑 문제 알고리즘 생각 A B C Goal: A 상의 원판 n개를 막대 B를 이용하여 C로 이동하라. hanoi_tower(n, A, B, C) 문제를 순환적으로 생각 A 상의 원판 n-1개를 B로 이동 (C를 이용) A의 하나 남은 원판을 A에서 C로 이동: move(A, C) B상의 원판 n-1개를 C로 이동 (A를 이용) A B C

예제: Hanoi 탑 문제 알고리즘 A B C A 상의 원판 n-1개를 B로 이동 (C를 이용) A의 하나 남은 원판을 C로 이동 B상의 원판 n-1개를 C로 이동 (A를 이용) A B C hanoi_tower(int n, char from, char tmp, char to) // from상의 n개 원판을 tmp를 이용하여 to로 이동 { }

예제: Hanoi 탑 문제