• Điều khoản & điều kiện
  • Chính sách bảo mật
Tech News, Magazine & Review WordPress Theme 2017
  • Trang chủ
  • Chia sẻ
    • Phần mềm
  • Kinh nghiệm
    • Kinh nghiệm về Internet
    • Kinh nghiệm về Linux
    • Kinh nghiệm về Windows
    • Kinh nghiệm về Lập trình
  • Giải thích thuật ngữ
    • Thuật ngữ Internet
No Result
View All Result
Tiền Minh Vy
  • Trang chủ
  • Chia sẻ
    • Phần mềm
  • Kinh nghiệm
    • Kinh nghiệm về Internet
    • Kinh nghiệm về Linux
    • Kinh nghiệm về Windows
    • Kinh nghiệm về Lập trình
  • Giải thích thuật ngữ
    • Thuật ngữ Internet
No Result
View All Result
Tiền Minh Vy
No Result
View All Result
Home Kinh nghiệm

Đệ quy và ứng dụng trong lập trình

Tiền Minh Vy by Tiền Minh Vy
01/09/2020
Reading Time: 6min read
Đệ quy và ứng dụng trong lập trình
Chia sẻ trên FacebookChia sẻ trên TwitterChia sẻ qua email

Khi chúng ta bắt đầu thực hiện dự án lập trình thì sự “phồng lên” về kích thước của file chứa dữ liệu là điều không thể tránh khỏi. Nhằm mục đích tinh gọn và đơn giản dự án đi (đa phần dùng vòng lặp) thì Đệ Quy ra đời. Nó có ứng dụng cực kỳ to lớn trong lập trình.

Tóm tắt ẩn
Đệ quy, thực chất nó là gì?
Lưu ý khi lập loại hàm đặc biệt này
Phân loại đệ quy
Phân biệt loại đệ quy
Ưu và nhược điểm
Ưu điểm
Nhược điểm
Tóm lại
Tham khảo
Có thể bạn sẽ thích

Đệ quy, thực chất nó là gì?

Đơn giản là dùng những vấn đề nhỏ để giải quyết vấn đề lớn. Ví dụ như chúng ta có 1 vấn đề lớn và cách giải quyết vấn đề lớn này lại là kết quả của vấn đề nhỏ, vì vậy để giải quyết ta chia vấn đề lớn ra nhiều vấn đề nhỏ rồi bắt đầu giải quyết các vấn đề nhỏ hơn kế tiếp

ví dụ đơn giản về đệ quy

Còn trong lập trình, định nghĩa đơn giản hơn là có một hàm tự gọi lại chính nó. Ví dụ như trong ngôn ngữ PHP:

<?php 
  // Chương trình tính tổng từ 1 -> n 
  function tinhTong($n) { 
    if ($n >0) { 
      return $n + tinhTong($n-1); 
    } 
    return $n; 
  } 
  // Ví dụ tinhTong(5) 
  // => 5 + tinhTong(4) => 5 + (4 + tinhTong(3)) => ... => 5 + (4 + (3 + (2 + 1))) = 15 
  // Bản quyền © 2020 bởi tienminhvy.com - Vui lòng ghi nguồn nếu chia sẻ lại! 
?>

Chương trình bên trên sẽ tính tổng các số từ 1 đến n. Ví dụ ta truyền 5 vào hàm (tinhTong(5)) thì kết quả trả về sẽ là 15. Cách thức hoạt động của hàm này như sau:

  • Đầu tiên gọi hàm với giá trị truyền vào là 5: tinhTong(5)
  • Sau đó, ngôn ngữ lập trình sẽ phân tích bằng cách thực thi hàm và ra kết quả là 5 + tinhTong(4)
  • Tiếp tục như trên thì kết quả cuối cùng là 15. Ta thấy hàm tinhTong($n) tự thực hiện chính bản thân nó (gọi là tự gọi nó) nên hàm này được xem như là một hàm đệ quy

Thực chất, trong lập trình thường dùng nó để thay thế vòng lặp với số lần lặp chưa biết trước.

Lưu ý khi lập loại hàm đặc biệt này

Bạn phải tuân thủ theo các điều kiện:

  • Viết câu lệnh điều kiện (if) sao cho hàm có thể tự thoát được, không gây tràn bộ nhớ
  • Hàm thường phải có tham số truyền vào

Phân loại đệ quy

dequy 1

Hiện tại được chia làm 2 loại: đệ quy đầu (loại 1) và đệ quy đuôi (loại 2). Bên dưới đây là một ví dụ về đệ quy đuôi trong PHP:

<?php 
  // Ví dụ 
  // Chương trình sau có công dụng như chương trình trước 
  function tinhTong2($n, $tong=0) { 
    if ($n <= 0) { 
      return $tong; 
    } 
    return tinhTong2($n-1,$tong+$n); 
  } 
  // Ví dụ cho tinhTong2(5) 
  // => tinhTong2(5,0);  
  // => tinhTong2(4,5);  
  // => tinhTong2(3,9);  
  // => tinhTong2(2,12);
  // => tinhTong2(1,14);
  // => tinhTong2(0,15); => return 15 
  // Bản quyền © 2020 bởi tienminhvy.com - Vui lòng ghi nguồn nếu chia sẻ lại! 
?>

Cách thức hoạt động của nó cũng tương tự như đệ quy đầu ở ví dụ trên nhưng khác một tí là: chương trình sẽ thực hiện phép tính và lấy kết quả đó làm giá trị truyền vào cho hàm đệ quy lần 2 và chương trình chỉ thực hiện câu điều kiện 1 lần duy nhất.

Hiệu quả ở đây là sẽ làm giảm đáng kể sự lưu trữ (tạo vùng nhớ tạm thời để lưu trữ) và giảm việc thực hiện câu điều kiện. Nên có thể nói loại này giúp chương trình chạy nhanh hơn.

Phân biệt loại đệ quy

Loại 1Loại 2
Return (trả về)tổng 1 số với hàm đệ quy kế tiếphàm đệ quy trực tiếp
Câu điều kiện (if)Thực hiện cho tới khi điều kiện saiChỉ thực hiện khi điều kiện sai
Giá trị truyền vàoThường là 1Thường nhiều hơn đệ quy đầu

Ưu và nhược điểm

Ưu điểm

  • Giúp chương trình nhẹ hơn, ít hơn
  • Dễ đọc nếu thông thạo
  • Trông ngầu hơn :v

Nhược điểm

  • Dễ gặp rắc rối nếu bạn chưa nắm rõ bản chất của nó
  • Dễ bị tràn bộ nhớ
  • Cần chất xám nhiều hơn :v

Tóm lại

Các bạn thấy đệ quy rất hữu ích phải không nào, nhưng cũng phải lưu ý là không phải lúc nào chúng ta cũng nên dùng nó đâu nhé, chỉ nên dùng nếu thấy thực sự cần thiết mà thôi, nếu không rối não như chơi đấy @[email protected]

Tham khảo

  • Một số ví dụ trong các ngôn ngữ lập trình khác
  • Xem thêm: Khái niệm về hệ điều hành
5 1 bình chọn
Đánh giá bài viết

Có thể bạn sẽ thích

Tags: đệ quyđệ quy cuốiđệ quy đầuphpứng dụng của đệ quy
Tiền Minh Vy

Tiền Minh Vy

Xin chào! Tôi là Tiền Minh Vy, là một lập trình viên có nhiều kinh nghiệm với Wordpress, tập trung nhiều với PHP.

Next Post
Hosting miễn phí, có nên dùng hay không?

Hosting miễn phí, có nên dùng hay không?

Đăng ký
Thông báo cho tôi về
guest
guest
0 Bình luận
Phản hồi nội tuyến
Xem tất cả bình luận

Hosting giá rẻ HostingTocDo

Giá chỉ từ 20,000đ/tháng, nhận hỗ trợ kỹ thuật và chuyển dữ liệu từ hosting cũ sang HostingTocDo miễn phí

Hỗ trợ Litespeed, Imunify360, jetBackup

Hỗ trợ Python, Node.js từ gói WH-02 trở lên.

Đăng ký tại đây

Cùng tham gia nhóm FB để học hỏi :3

Về tôi

Tôi là một người có nhiều kinh nghiệm với WordPress, là một lập trình viên website, tập trung nhiều với PHP.

Ngoài ra tôi cũng có nhận các dự án lập trình freelance. Nếu bạn có nhu cầu vui lòng liên hệ qua Email: [email protected]

Chuyên mục

Bảo mật Bảo mật Bảo mật Chia sẻ Dịch bài Linux Dịch thuật Featured Game Giveaway Giải thích thuật ngữ Hosting Học tập Internet Internet Kinh nghiệm Kinh nghiệm về Internet Kinh nghiệm về Linux Kinh nghiệm về Lập trình Kinh nghiệm về Windows Linux Lập trình Miễn phí Miễn phí Mã nguồn mở Phần mềm Phần mềm Sửa lỗi Thuật ngữ Internet Thủ thuật Tin tức công nghệ Uncategorized Windows Windows Wordpress

DMCA Protected

DMCA.com Protection Status

Bình luận mới nhất

  • dunguyen trong Chia sẻ 2000 Preset Lightroom miễn phí
  • Tiền Minh Vy trong Bản quyền Sketch Drawer Pro miễn phí
  • Hoai trong Bản quyền Sketch Drawer Pro miễn phí
  • Tiền Minh Vy trong Bản quyền Sketch Drawer Pro miễn phí
  • Tiền Minh Vy trong LMMS, trình soạn nhạc chuyên nghiệp miễn phí

Bạn bè \ Hữu ích \ Tài trợ

Linux Team Việt Nam

Mua theme WordPress gia re

Hosting miễn phí HostingTocDo

Công cụ hữu ích – All In One (AIO)

  • Điều khoản & điều kiện
  • Chính sách bảo mật

Bản quyền © 2019 - 2020 bởi tienminhvy.com, bảo lưu mọi quyền

No Result
View All Result
  • Trang chủ
  • Chia sẻ
    • Phần mềm
  • Kinh nghiệm
    • Kinh nghiệm về Internet
    • Kinh nghiệm về Linux
    • Kinh nghiệm về Windows
    • Kinh nghiệm về Lập trình
  • Giải thích thuật ngữ
    • Thuật ngữ Internet

Bản quyền © 2019 - 2020 bởi tienminhvy.com, bảo lưu mọi quyền

wpDiscuz