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

15 522 4
Đệ quy và thuật toán đệ quy pps

Đ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

19/08/2011 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 4.  quy và hình hc fractal 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                       19/08/2011 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)            int Factorial(int N) { if (N <= 1) //điu kin dng return 1; return N*Factorial(N-1); //li gi đ quy }  quy và gii thut đ quy 19/08/2011 3 7 Ni dung 1.  quy và gii thut đ quy 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 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: Last In First Out  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) { if (N <= 1) return 1; return N*Fact(N-1); } void main() { int n = 4; int m = Fact(n); cout<<m; getch(); } Stack và đ quy m = 4*Fact(3) Fact(3) = 3*Fact(2) Fact(2) = 2*Fact(1) Fact(1) = 1 24 6 2 1 19/08/2011 4 10 Ni dung 1.  quy và gii thut đ quy 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 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 int Power(int a, int N) { if (N == 0) return 1; return a*Power(a, N-1); } Các loi đ quy            19/08/2011 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) { if (n == 0) return 0; return Sum(A, n – 1) + A[n - 1]; } Các loi đ quy 0 1 2 3 n-2 n-1 … 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) { if (n == 0) return 0; if (A[n – 1] == x) return 1; return IsExists(A, n – 1, x); } Các loi đ quy 0 1 2 3 n-2 n-1 … 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) { if (a == b) return a; if (a > b) return UCLN(a – b, b); return UCLN(a, b - a); } Các loi đ quy 19/08/2011 6 16   quy nhánh  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   quy nhánh  Tìm s Fibonacci th n (n nguyên dng)               int F(int n) { if (n <= 1) return 1; return F(n - 2) + F(n - 1); } Các loi đ quy 18 Các loi đ quy   quy nhánh  Minh ha tìm s Fibonacci th 5 F(5) F(3) F(4) F(1) F(2) F(2) F(3) F(0) F(1) F(0) F(1) F(1) F(2) F(0) F(1) 1 1 1 1 1 1 1 1 2 3 2 2 5 3 8 19/08/2011 7 19 Các loi đ quy   quy nhánh  Bài toán tháp Hà Ni: chuyn 2 đa t ct 1 sang ct 3 1 2 3 20 Các loi đ quy   quy nhánh  Bài toán tháp Hà Ni: chuyn 2 đa t ct 1 sang ct 3 1 2 3 21 Các loi đ quy   quy nhánh  Bài toán tháp Hà Ni: chuyn N đa t ct 1 sang ct 3 Company Logo 1 2 3 19/08/2011 8 22 Các loi đ quy   quy nhánh  Bài toán tháp Hà Ni: chuyn N đa t ct 1 sang ct 3 Company Logo 1 2 3 23   quy nhánh  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) { if (N == 1) cout<< "chuyen tu "<<x<<" sang "<<y<<endl; else { Chuyen(N – 1, x, 6 – x - y); Chuyen(1, x, y); Chuyen(N – 1, 6 – x – y, y); } } Các loi đ quy 24   quy nhánh  Thut toán tô màu hình kín (FloodFill) Các loi đ quy 19/08/2011 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 X n = n 2 X 0 + (n-1) 2 X 1 +…+X n-1 , bit X 0 = 1 double X(int N) { if (N == 0) return 1; double s = 0; for (int i = 0; i < N; i++) s = s + (N – i)*(N – i)*X(i); return s; } Các loi đ quy 27   quy h tng  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 19/08/2011 10 28   quy h tng  Hãy tính X n và Y n bit dãy s đc đnh ngha nh sau                      Các loi đ quy 29   quy h tng double X(int N); double Y(int N); double X(int N) { if (N == 0) return 1; return X(N – 1) + Y(N – 1); } double Y(int N) { if (N == 0) return 1; return X(N – 1) * Y(N - 1); } Các loi đ quy 30   quy h tng  ng Hilbert: Các loi đ quy [...]...19/08/2011 31 Sierpinski hình vuông 32 33 11 19/08/2011 34 35 toán Tìm quy Tìm cho th 36 12 19/08/2011 Ví 1: cho n nguyên tính giá quát và ta có n = 1 thì S1 = 1 Company Logo 37 double S(int N) { if (N == 1) return 1; return S(N 1) + 1/(n*n); } Company Logo Ví 38 2: tính A giá N nguyên Thông 1) + A[N-1] . 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 4.  quy và hình hc fractal 5. K thut tìm gii thut đ quy 3 . N*Factorial(N-1); //li gi đ quy }  quy và gii thut đ quy 19/08/2011 3 7 Ni dung 1.  quy và gii thut đ quy 2. Stack và đ quy 3. Các loi đ quy 4.  quy và hình hc fractal 5 loi đ quy 30   quy h tng  ng Hilbert: Các loi đ quy 19/08/2011 11 31 Ni dung 1.  quy và gii thut đ quy 2. Stack và đ quy 3. Các loi đ quy 4.  quy và hình

Ngày đăng: 08/08/2014, 04:21

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan