1. Trang chủ
  2. » Công Nghệ Thông Tin

Đệ quy và thuật toán đệ quy

15 14 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 412,99 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đệ quy (tiếng Anh: recursion) là phương pháp dùng trong các chương trình máy tính trong đó có một hàm tự gọi chính nó. rong toán học và khoa học máy tính, các tính chất (hoặc cấu trúc) được gọi là đệ quy nếu trong đó một lớp các đối tượng hoặc phương pháp được xác định bằng việc xác định một số rất ít các trường hợp hoặc phương pháp đơn giản (thông thường chỉ một) và sau đó xác định quy tắc đưa các trường hợp phức tạp về các trường hợp đơn giản....

Trang 1

LOGO

GVGD: Tr ng Ph c H i

quy và

Thu t toán đ quy

2

N i dung

1 quy và gi i thu t đ quy

2 Stack và đ quy

3 Các lo i đ quy

5 K thu t tìm gi i thu t đ quy

3

nh ngh a đ quy:

 K thu t đ nh ngh a m t khái ni m tr c ti p ho c gián ti p

d a vào chính nó

quy và gi i thu t đ quy

Trang 2

4

Gi i thu t đ quy là gi i thu t g i l i chính b n

thân nó nh ng th hi n đ n gi n h n

Gi i thu t đ quy đ c ng d ng đ chia nh bài

toán thành nh ng bài toán con cùng ki u d gi i

quy t h n

quy c ng có th đ c dùng đ thay th cho

vòng l p trong m t s tr ng h p

quy và gi i thu t đ quy

5

quy và gi i thu t đ quy

M t hàm đ quy g m 2 ph n

 Ph n c s : cho giá tr đ n gi n ho c t m th ng c a bài

toán, đây là đi u ki n d ng c a đ quy

 Ph n đ quy: ch a m t ho c nhi u l i g i đ n chính nó

nh ng v i tham s nh h n

6

Ví d

 Tính giai th a N (v i N nguyên d ng)

{

}

quy và gi i thu t đ quy

Trang 3

7

N i dung

2 Stack và đ quy

3 Các lo i đ quy

5 K thu t tìm gi i thu t đ quy

8

 Stack (ch ng) là m t c u trúc d li u đ c bi t có 2

thao tác c b n

 Push: đ a ph n t vào đ u stack

 Pop: l y ph n t đ u ra kh i stack

 Nguyên lý ho t đ ng: L ast I n F irst O ut

 Là linh h n c a đ quy

Stack và đ quy

1

2

3

4

9

Ví d đ quy tính giai th a:

int Fact( int N)

{

}

{

}

Stack và đ quy

m = 4*Fact(3) Fact(3) = 3*Fact(2) Fact(2) = 2*Fact(1) Fact(1) = 1

24

6

2

1

Trang 4

10

N i dung

2 Stack và đ quy

3 Các lo i đ quy

5 K thu t tìm gi i thu t đ quy

11

quy tuy n tính

 Là hình th c đ n gi n nh t c a đ quy

 Ch có t i đa m t l i g i đ n chính nó

vd: tính giai th a, l y th a, …

Các lo i đ quy

12

quy tuy n tính

 Tính l y th a c a 2 s nguyên d ng a, N

{

}

Các lo i đ quy

Trang 5

13

quy tuy n tính

 Tính t ng giá tr c a n ph n t thu c m ng A

int Sum( int A[], int n)

{

}

Các lo i đ quy

Sum(A, n) Sum(A, n-1)

14

quy tuy n tính

 Ki m tra x có t n t i trong m ng A g m n ph n t nguyên

int IsExist( int A[], int n, int x)

{

}

Các lo i đ quy

IsExitst(A, n, x) IsExist(A, n-1, x)

15

quy tuy n tính

 Tìm UCLN c a 2 s nguyên d ng a, b

int UCLN( int a, int b)

{

}

Các lo i đ quy

Trang 6

16

 Có nhi u h n m t l i g i (th ng là 2 ho c 3 l i g i) đ n

chính nó

vd: tìm ph n t th n c a dãy Fibonacci, tính t

h p, bài toán tháp Hà N i, thu t toán tô màu hình

kín FloodFill, …

Các lo i đ quy

17

 Tìm s Fibonacci th n (n nguyên d ng)

int F( int n)

{

}

Các lo i đ quy

18

Các lo i đ quy

 Minh h a tìm s Fibonacci th 5

F(5)

1

1

1

1

1

1

1

1

2

3

2

2

5

3

8

Trang 7

19

Các lo i đ quy

 Bài toán tháp Hà N i: chuy n 2 đ a t c t 1 sang c t 3

20

Các lo i đ quy

 Bài toán tháp Hà N i: chuy n 2 đ a t c t 1 sang c t 3

21

Các lo i đ quy

 Bài toán tháp Hà N i: chuy n N đ a t c t 1 sang c t 3

Company Logo

Trang 8

22

Các lo i đ quy

 Bài toán tháp Hà N i: chuy n N đ a t c t 1 sang c t 3

Company Logo

23

 Bài toán tháp Hà N i (chuy n N đ a t c t x sang c t y)

void Chuyen( int N, int x, int y)

{

cout<<"chuyen tu "<<x<<" sang "<<y<<endl;

}

Các lo i đ quy

24

 Thu t toán tô màu hình kín (FloodFill)

Các lo i đ quy

Trang 9

25

quy phi tuy n

 L i g i đ quy đ c th c hi n trong vòng l p

vd: cho dãy đ c đ nh ngh a

X 0 = 1

X n = n 2 X 0 + (n-1) 2 X 1 +…+X n-1

Yêu c u: tính giá tr c a X n

Các lo i đ quy

26

quy phi tuy n

 Tính Xn = n2X0 + (n-1)2X1+…+Xn-1, bi t X0 = 1

double X( int N)

{

}

Các lo i đ quy

27

 L i g i có s xoay vòng l n nhau, nh A g i B, B g i C, C

g i A, …

 quy h t ng là đ quy r t ph c t p nh ng có nh ng

ng d ng r t lý thú, ch ng h n trong hình h c fractal

Các lo i đ quy

Trang 10

28

 Hãy tính Xn và Yn bi t dãy s đ c đ nh ngh a nh sau

Các lo i đ quy

29

double X( int N)

{

}

double Y( int N)

{

}

Các lo i đ quy

30

 ng Hilbert:

Các lo i đ quy

Trang 11

31

N i dung

2 Stack và đ quy

3 Các lo i đ quy

4 quy và hình h c fractal

5 K thu t tìm gi i thu t đ quy

32

ng Sierpinski tam giác

ng Sierpinski hình vuông

quy và hình h c fractal

33

ng Sierpinski các d ng khác

quy và hình h c fractal

Trang 12

34

quy và hình h c fractal

35

N i dung

2 Stack và đ quy

3 Các lo i đ quy

5 K thu t tìm gi i thu t đ quy

36

Thông s hóa bài toán

 Xác đ nh tham s truy n cho hàm đ quy

 Xác đ nh c p (kích th c) c a bài toán

Tìm mô hình t ng quát đ thu nh bài toán

 Thu nh bài toán theo kích th c

 Tìm đi u ki n d ng c a đ quy

 Tìm đi u ki n c a tr ng h p cho l i gi i t m th ng

K thu t tìm gi i thu t đ quy

Trang 13

37

K thu t tìm gi i thu t đ quy

 Ví d 1: cho n nguyên d ng, tính giá tr bi u th c

 Thông s hóa bài toán: kích th c bài toán n

 Mô hình t ng quát

ta có

 i u ki n d ng: n = 1 thì S1 = 1

Company Logo

38

K thu t tìm gi i thu t đ quy

Gi i thu t minh h a

double S( int N)

{

}

Company Logo

39

 Ví d 2: tính t ng giá tr N ph n t nguyên c a

m ng A

 Thông s hóa bài toán: m ng A, N ph n t

 Mô hình t ng quát: T ng(A, N) = T ng(A, N – 1) + A[N-1]

 i u ki n d ng: N = 0 thì T ng = 0

K thu t tìm gi i thu t đ quy

Trang 14

40

Gi i thu t minh h a

{

}

K thu t tìm gi i thu t đ quy

41

 Ví d 3: áp d ng t t ng tìm ki m nh phân đ

tìm v trí xu t hi n c a s nguyên x trong m ng A

g m N ph n t nguyên

 Thông s hóa: m ng A, đ u m ng, cu i m ng, giá tr x

 Mô hình t ng quát:

A[gi a] = x: tìm thành công

A[gi a] < x: tìm t đ u = gi a + 1 đ n cu i

x < A[gi a]: tìm t đ u đ n cu i = gi a - 1

 i u ki n d ng: đ u > cu i

K thu t tìm gi i thu t đ quy

42

Gi i thu t minh h a

int BinSearch( int A[], int l, int r, int x)

{

}

K thu t tìm gi i thu t đ quy

Trang 15

43

Ví d 4: cho s nguyên d ng N ≤ 1000 Vi t hàm

đ quy bi u di n nh phân c a N

 Thông s hóa: s nguyên N

 Mô hình t ng quát:

a giá tr N % 2 vào stack

G i đ quy v i c p N/2

 i u ki n d ng: N = 0

K thu t tìm gi i thu t đ quy

44

Gi i thu t minh h a

{

}

Minh h a g i

BinConvert(11)

K thu t tìm gi i thu t đ quy

BinConvert(11) BinConvert(5) BinConvert(2) BinConvert(1)

1 0 1 1

11 = 10 2

11 % 2 = 1

5 % 2 = 1

2 % 2 = 0

1 % 2 = 1

Ngày đăng: 21/05/2021, 12:42

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w