✨Đệ quy (tin học)

Đệ quy (tin học)

nhỏ|phải|300x300|[[Tam giác Sierpinski]]

Đệ 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ó.

Khái niệm hình thức về đệ quy

Trong 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.

Chẳng hạn, định nghĩa sau là định nghĩa đệ quy của tổ tiên: Bố mẹ của một người là tổ tiên của người ấy (trường hợp cơ bản); Bố mẹ của tổ tiên một người bất kỳ là tổ tiên của người ấy (bước đệ quy).

Các định nghĩa kiểu như vậy cũng thường thấy trong toán học (chính là quy nạp toán học)

Định nghĩa theo đệ quy

Một khái niệm X được định nghĩa theo đệ quy nếu trong định nghĩa X có sử dụng ngay chính khái niệm X.

  • Ví dụ 1: Định nghĩa số tự nhiên :- 0 là một số tự nhiên. :- n là số tự nhiên nếu n - 1 là số tự nhiên.

Đệ quy trong khoa học máy tính

Có một phương pháp chung để giải các bài toán là chia bài toán thành các bài toán con đơn giản hơn cùng loại. Phương pháp này được gọi là Thuật toán chia để trị. Chính nó là chìa khóa để thiết kế nhiều giải thuật quan trọng, là cơ sở của quy hoạch động.

Một ví dụ cổ điển của đệ quy là hàm giai thừa cho bằng giả mã trong C hoặc C++ sau đây:

int factorial(n) { if (n <= 1) return 1; else return n * factorial(n-1); }

Một ví dụ khác của giải thuật đệ quy là thủ tục duyệt (nghĩa là thực hiện một công việc nào đó với chúng) tất cả các nút của một cấu trúc dữ liệu cây:

procedure ProcessTree(node) { ProcessNode(node); // thực hiện một thuật toán riêng với nút đầu for each child_node of node do ProcessTree(child_node); }

Để duyệt một cây, gọi thủ tục này với nút gốc của cây như một tham biến khởi tạo. Tiếp theo, thủ tục gọi đệ quy đến chính nó cho tất cả các nút con của nút vừa gọi (nghĩa là các cây con của cây vừa gọi), cho đến khi gặp trường hợp cơ bản nghĩa là nút không có con (thường gọi là "lá").

Chính cấu trúc cây cũng được định nghĩa bằng đệ quy như sau:

struct node { child_nodes: list; ... }

struct tree { root: node; ... }

Cây được biểu diễn bằng một nút gốc và danh sách các nút con của nút ấy. Mỗi nút con lại có danh sách các nút con của nó (và như vậy, nó là gốc của một cây con). với danh sách rỗng các nút con là trường hợp cơ sở của nút.

Chương trình con đệ quy

Trong lập trình, có khái niệm: một chương trình con (hàm, thủ tục) được gọi là đệ quy nếu trong quá trình thực hiện nó có phần phải gọi đến chính nó.

Cấu trúc chính

Một chương trình con đệ quy căn bản gồm hai phần.

  • Phần cơ sở: chứa các tác động của hàm hoặc thủ tục với một số giá trị cụ thể ban đầu của tham số.
  • Phần đệ quy: định nghĩa tác động cần được thực hiện cho giá trị hiện thời của các tham số bằng các tác động đã được định nghĩa trước đây với kích thước tham số nhỏ hơn.

Ví dụ: Hàm tính giai thừa của một số tự nhiên n (tính n!) (Đoạn mã sau được viết bằng ngôn ngữ Pascal)

function factorial(n: Word): Longint; begin if n = 0 then exit(1) else exit(n*(factorial(n-1))); end;

Quy trình thực hiện

Trong ví dụ trên, quy trình thực hiện như sau:

  • Khi có lệnh gọi hàm, chẳng hạn:

    n:= factorial(3);
  • thì máy sẽ ghi nhớ là:

    factorial(3):= 3 * factorial(2); và đi tính gt(2)
  • kế tiếp máy lại ghi nhớ:

    factorial(2):= 2 * factorial(1); và đi tính gt(1)
  • Theo định nghĩa của hàm thì:

    factorial(1):= 1;
  • Máy sẽ quay ngược lại:

    factorial(2):= 2 * 1; cho kết quả là 2
  • Tiếp tục:

    factorial(3):= 3 * 2; cho kết quả là 6
  • Như vậy kết quả cuối cùng trả về là 6. Ta có: 3! = 6

Đệ quy tương hỗ

Nếu có hai chương trình con A1 và A2 gọi nhau ta có đệ quy tương hỗ.

Đệ quy tương hỗ thường được dùng để duyệt cây theo chiều sâu.

type B(...); type A(...) { .... B(...); ... } type B(...) { .... A(...); ... }
👁️ 1 | 🔗 | 💖 | ✨ | 🌍 | ⌚
nhỏ|phải|300x300|[[Tam giác Sierpinski]] **Đệ 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ó. ## Khái niệm hình thức về đệ quy
**Mạng lưới Quỹ Khoa học Quốc gia** (**National Science Foundation Network -** **NSFNET** ) là một chương trình phối hợp, phát triển các dự án do Quỹ Khoa học Quốc gia (NSF) tài trợ bắt
**Hội Tin học Thành phố Hồ Chí Minh** là một tổ chức quần chúng tự nguyện của những cá nhân và đơn vị làm công nghệ thông tin (CNTT) trên địa bàn Thành phố Hồ
**Tin học kinh tế** là một ngành khoa học nghiên cứu, thiết kế, phát triển và ứng dụng công nghệ thông tin và hệ thống truyền thông trong các doanh nghiệp. Với danh nghĩa một
frame|Mô hình hoạt động bộ nhớ cache của máy tính Trong tin học, **cache** ( ) hoặc **bộ nhớ đệm** là một thành phần phần cứng hoặc phần mềm lưu trữ dữ liệu để các
phải|nhỏ| Biểu đồ bệnh nhân điện tử từ hệ thống thông tin y tế **Tin học y tế** (còn gọi là **tin học chăm sóc sức khỏe**, **tin học** **điều dưỡng**, **tin học** **lâm sàng**
**Cục Chuyển đổi số quốc gia** là tổ chức trực thuộc Bộ Thông tin và Truyền thông, thực hiện chức năng tham mưu giúp Bộ trưởng quản lý nhà nước và tổ chức thực thi
**Địa tin học** là khoa học sử dụng và phát triển trên cơ sở hạ tầng của khoa học thông tin để giải quyết các vấn đề về địa lý, khoa học Trái Đất và
**Cục Tin học và Thống kê tài chính** là cơ quan trực thuộc Bộ Tài chính, có chức năng tham mưu, giúp Bộ trưởng Bộ Tài chính thực hiện nhiệm vụ quản lý nhà nước
thumb|220x124px | right | Một thông tin được mã hoá bởi các dòng mã (code) **Tin học** hay **khoa học thông tin** (gọi tắt là **tin**) (, ) là một ngành khoa học chuyên nghiên
**Trường Đại học Ngoại ngữ _–_ Tin học Thành phố Hồ Chí Minh** (tiếng Anh: _Ho Chi Minh City University of Foreign Languages – Information Technology_, tên viết tắt: **HUFLIT**) là một đại học tư
**Tin học thủy văn** (_Hydroinformatics_) là một môn khoa học thuộc lĩnh vực tin học tập trung vào ứng dụng công nghệ thông tin và truyền thông (CNTT-TT) để giải quyết các vấn đề ngày
Quỹ Tín Dụng Mỹ Hòa được thành lập ngày 25/04/1998 và đi vào hoạt động từ đó, với số lượng nhân sự là 7 người, 3 người HĐQT và 1 kiểm soát.Quỹ Tín Dụng Nhân
phải|nhỏ|200x200px| Các lớp học về kinh tế sử dụng rộng rãi các biểu đồ cung và cầu như biểu đồ này để dạy về thị trường. Trong đồ thị này, S và D là cung
**Quỹ Phát triển khoa học và công nghệ quốc gia** (tiếng Anh: _National Foundation for Science and Technology Development_, viết tắt: _NAFOSTED_) là đơn vị sự nghiệp phi lợi nhuận, trực thuộc Bộ Khoa học
Tin Học ABC được thành lập vào năm 2008 đến nay đã có hơn 15 năm kinh nghiệm trong lĩnh vực tin học, phần mềm. Công ty chúng tôi chuyên cung cấp các thiết bị
Tin Học ABC được thành lập vào năm 2008 đến nay đã có hơn 15 năm kinh nghiệm trong lĩnh vực tin học, phần mềm. Công ty chúng tôi chuyên cung cấp các thiết bị
Tin Học ABC được thành lập vào năm 2008 đến nay đã có hơn 15 năm kinh nghiệm trong lĩnh vực tin học, phần mềm. Công ty chúng tôi chuyên cung cấp các thiết bị
Tin Học ABC được thành lập vào năm 2008 đến nay đã có hơn 15 năm kinh nghiệm trong lĩnh vực tin học, phần mềm. Công ty chúng tôi chuyên cung cấp các thiết bị
**Vụ lộ đề môn Sinh học trong kỳ thi tốt nghiệp Trung học phổ thông 2021** (gọi ngắn gọn: **Vụ lộ đề thi Sinh**) là vụ lộ đề mà nội dung đề thi môn Sinh
Tin Học ABC được thành lập vào năm 2008 đến nay đã có hơn 15 năm kinh nghiệm trong lĩnh vực tin học, phần mềm. Công ty chúng tôi chuyên cung cấp các thiết bị
Trung tâm Tin học là đơn vị chuyên trách quản lý và cung cấp các dịch vụ về công nghệ thông tin của Trường Đại học An GiangTrung tâm Tin học là đơn vị chuyên
**Hệ thống tín chỉ tại Việt Nam** là một phương pháp đào tạo được áp dụng đối với giáo dục đại học có nguồn gốc từ Phương pháp đào tạo theo hệ thống tín chỉ
**Học sâu** (tiếng Anh: **deep learning**, còn gọi là **học cấu trúc sâu**) là một phần trong một nhánh rộng hơn các phương pháp học máy dựa trên mạng thần kinh nhân tạo kết hợp
nhỏ|348x348px|Tượng _[[Người suy tư_ của Auguste Rodin là một biểu tượng của tư tưởng triết lý.]] **Triết học** (; ) là một ngành nghiên cứu có hệ thống về những vấn đề cơ bản và
**Đại học Quốc gia Thành phố Hồ Chí Minh** (, viết tắt là **VNUHCM**), mã đại học **QS**, là một trong hai hệ thống đại học quốc gia của Việt Nam bên cạnh Đại học
**Đại học George Mason** (tiếng Anh: _George Mason University_; gọi tắt: _Mason_ hoặc _GMU_) là một trường đại học nghiên cứu công lập nằm tại quận Fairfax, bang Virginia, Hoa Kỳ. Trường nằm ở phía
Toán học trong nghệ thuật: Bản khắc trên tấm đồng mang tên _[[Melencolia I_ (1514) của Albrecht Dürer. Những yếu tố liên quan đến toán học bao gồm com-pa đại diện cho hình học, hình
thumb|upright=1.3|Các [[hàm sóng của electron trong một nguyên tử hydro tại các mức năng lượng khác nhau. Cơ học lượng tử không dự đoán chính xác vị trí của một hạt trong không gian, nó
**Hán Quang Vũ Đế** (chữ Hán: 漢光武帝; 15 tháng 1, 5 TCN – 29 tháng 3, 57), hay còn gọi **Hán Thế Tổ** (漢世祖), húy **Lưu Tú** (劉秀), biểu tự **Văn Thúc** (文叔), là vị
**Học viện Cảnh sát nhân dân** còn được gọi là **T02**, **T18** hoặc **T32** (tiếng Anh: _the Vietnam People's Police Academy - VPPA_) là cơ sở đào tạo đại học, sau đại học hệ công
**Trường Đại học Quy Nhơn** (_Quy Nhon University)_ là một trong ba trường đại học đa ngành đứng đầu về đào tạo tại Trung Bộ, là một trụ cột trong hệ thống giáo dục bậc
**Đại học Virginia** (tiếng Anh: _University of Virginia;_ gọi tắt: _U.Va_ hoặc _UVA_) là một trường đại học nghiên cứu công lập tại Charlottesville, Virginia, Hoa Kỳ. Trường được Thomas Jefferson thành lập vào năm
**Trường Đại học Hà Nội** (tiếng Anh: **Hanoi University**, tên viết tắt: **HANU**) là một trong hai cơ sở đào tạo và nghiên cứu ngoại ngữ ở trình độ đại học và sau đại học;
**Trường Đại học Mỏ – Địa chất** (tiếng Anh: _Hanoi University of Mining and Geology_) là một trường đại học đa ngành hàng đầu tại Việt Nam, thuộc nhóm 95 trường đại học hàng đầu
**Trường Đại học Lạc Hồng** là trường đại học tư thục đầu tiên tại tỉnh Đồng Nai. Trường có trụ sở tại Số 10 Huỳnh Văn Nghệ, phường Bửu Long, thành phố Biên Hòa, tỉnh
**Triết học khoa học** là một nhánh của triết học quan tâm đến nền tảng, phương pháp và các hậu quả của khoa học. Các câu hỏi trung tâm của môn học này bao gồm
**Trường Đại học Sao Đỏ** (tên tiếng Anh: Red Star University) là trường Đại học công lập được thành lập năm 2010 trên cơ sở nâng cấp Trường Cao đẳng Công nghiệp Sao Đỏ, có
Các **quỹ phòng hộ**, **quỹ tự bảo hiểm rủi ro** hay **quỹ đối xung** (hedge fund) là các quỹ đầu tư tư nhân được quản lý chủ động. Họ đầu tư vào một phạm vi
**Đại học Bách khoa Ivanovo** (, viết tắt **ИВГПУ**, chuyển tự **IVGPU**) là cơ sở giáo dục đại học nằm ở thành phố Ivanovo, được thành lập theo quyết định số 995 ngày 28 tháng
thumb|Một số nhân vật chính Dưới đây là danh sách nhân vật trong manga và anime _Thanh gươm diệt quỷ_ của tác giả Gotōge Koyoharu. ## Nhân vật chính ### Kamado Tanjirō : là người
**Công nghệ thông tin và truyền thông** (tiếng Anh: _Information and communications technology_, ICT) là cụm từ thường dùng như từ đồng nghĩa rộng hơn cho công nghệ thông tin (IT), nhưng thường là một
thumb | [[Hoá học là một phân nhánh của khoa học tự nhiên]] **Khoa học** là một hệ thống kiến thức về những định luật, cấu trúc và cách vận hành của thế giới tự
**Trường Đại học Vinh** () là một đại học đa ngành, đa lĩnh vực, cấp vùng Bắc Trung Bộ, trực thuộc Bộ Giáo dục và Đào tạo , là một trường đại học lớn có
**Đại học Bách khoa Hà Nội** (, **HUST**) là đại học theo lĩnh vực kỹ thuật và công nghệ có trụ sở tại Hà Nội, Việt Nam. Đại học Bách khoa Hà Nội được xem
:_Bài này nói về Trường Trung học Phổ thông Chuyên Bến Tre tại Bến Tre, ngoài ra còn có Trường Trung học Phổ thông Bến Tre tại Vĩnh Phúc, xem thêm Trường Trung học Phổ
**Alexandre de Rhodes** (15 tháng 3 năm 1593 – 5 tháng 11 năm 1660) là một nhà truyền giáo Dòng Tên và một nhà ngôn ngữ học người Avignon. Ông là một trong những giáo
**Tùy Dạng Đế** (chữ Hán: 隋煬帝, 569 - 11 tháng 4, 618), có nguồn phiên âm là **Tùy Dượng Đế**, **Tùy Dương Đế** hay **Tùy Dưỡng Đế**, đôi khi còn gọi là **Tùy Minh Đế**
_Cuốn [[The Compendious Book on Calculation by Completion and Balancing_]] Từ _toán học_ có nghĩa là "khoa học, tri thức hoặc học tập". Ngày nay, thuật ngữ "toán học" chỉ một bộ phận cụ thể
phải|Cấu trúc của [[insulin.]] liên_kết=https://vi.wikipedia.org/wiki/T%E1%BA%ADp tin:Insulincrystals.jpg|nhỏ|Tinh thể [[insulin]] **Công nghệ sinh học** là một lĩnh vực sinh học rộng lớn, liên quan đến việc sử dụng các hệ thống sống và sinh vật để phát