Trong bài viết này, bạn sẽ tìm hiểu cách để tạo ra hàm đệ quy (recursive function), một hàm mà tự gọi chính nó. Đồng thời, bạn cũng sẽ tìm hiểu thêm về điểm thuận lợi và điểm bất lợi của chúng.

Bạn đang xem: Recursion là gì

Một phương thức đệ quy (recursive method) là một phương thức mà nó tự gọi chính nó. Và kỹ thuật này được biết là kỹ thuật đệ quy (recursion)

Một ví dụ vật lý thực tế là việc đặt hai tấm gương hướng song song vào nhau. Bất kì vật thể nào ở giữa chúng sẽ phản chiếu một cách đệ quy.

*

Trong chương trình ở trên, ban đầu, phương thức recurse()được gọi từ bên trong phương thức chính (gọi thông thường normal method call)

Đồng thời, phương thức recurse()lại được gọi từ bên trong phương thức recurse() kia. Đây là cuộc gọi đệ quy recursive call.

Kỹ thuật đệ quy tiếp tục cho tới khi vài điều kiện được đáp ứng để ngăn chặn nó khỏi việc thực thi. Nếu không, đệ quy sẽ xảy ra vô hạn.

Do đó, để tránh việc đệ quy vô hạn, câu lệnh điều kiện if…else có thể được sử dụng một nhánh để thực hiện gọi đệ quy còn nhánh còn lại thì ko.

1. Lấy ví dụ: Giai thừa của một số sử dụng kỹ thuật đệ quy

/*** Cafedev- Kênh thông tin IT hàng đầu Việt Nam**
author cafedevn* Contact: cafedevn

4 factorial = 24Đầu tiên, phương thức factorial được gọi từ phương thức main với number được truyền một đối số.

Bên cạnh phương thức factorial, giá trịn của n là 4 lúc đầu. Trong suốt lần gọi đệ quy tiếp theo, số 3 được truyền tới phương thức factorial. Quá trình này tiếp diễn cho tới khi n bằng 0.

Khi n bằng 0, điều kiện if sẽ ngừng và phần else sẽ được thực thi trả về 1 và kết quả tích lũy sẽ được truyền tới phương thức main.

2. Những ưu điểm và nhược điểm của kỹ thuật đệ quy

Khi một lần gọi đệ quy được thực hiện, bộ nhớ mới được cấp cho các biến được phân vùng trên stack. Khi mỗi lần gọi đệ quy vòng lại, các biến và tham số cũ bị xóa khỏi stack. Do đó, nhìn chung, kỹ thuật đệ quy sử dụng nhiều bộ nhớ hơn và chậm hơn.

Mặt khác, giải pháp đệ quy lại dễ hơn và tốn ít thời gian hơn để viết, sửa lỗi, và bảo trì.

???????????? Hãy ủng hộ Cafedev bằng những rating 5 sao ở đây????????????

Share
Facebook
Twitter
Pinterest
Linkedin
Email
Bài trước Biểu thức lambda trong Java
Bài tiếp theo Toán tử instanceof trong Java
David Xuân

Big Update | Tài liệu học Java Miễn Phí cực chi tiết

Tự học Java | Lớp File trong Java

Tự học Java | Generics trong Java

Khoá học đang hot

*

Thuê server giá cực rẻ
Top các bài viết

Tự học AWS | Tìm hiểu về cơ sở hạ tầng(Infrastructure)…

Xem thêm: Clustered Index Là Gì – Sql Việt Blog» Blog Archive » Clustered Index

David Xuân – 7 Tháng Hai, 2021
0
Trong bài này chúng ta sẽ hiểu thêm về cơ sở hạ tầng trên toàn cầu của Amazon Web Services(AWS). Để tạo nên các nơi lưu trữ, dịch vụ trên toàn thế giới như hiện nay và được nhiều người tin chọn.

Tự học AWS | Tìm hiểu về các tính năng của…

7 Tháng Hai, 2021

Tự học AWS | Tìm hiểu về lịch sử của Amazon…

7 Tháng Hai, 2021

Tự học AWS | Giới thiệu chi tiết về AWS(Amazon Web…

7 Tháng Hai, 2021

Big Update | Tài liệu học Java Miễn Phí cực chi…

4 Tháng Hai, 2021
BÀI VIẾT TIÊU BIỂU

Tự học AWS | Tìm hiểu về cơ sở hạ tầng(Infrastructure)…

7 Tháng Hai, 2021

Tự học AWS | Tìm hiểu về các tính năng của…

7 Tháng Hai, 2021

Tự học AWS | Tìm hiểu về lịch sử của Amazon…

7 Tháng Hai, 2021
BÀI VIẾT PHỔ BIẾN

Tổng hợp toàn bộ tài liệu học hướng đối tượng và…

26 Tháng Bảy, 2020

Giới thiệu chi tiết về CI-CD và những điều cần thiết…

Xem thêm: Thiếu Tá Tiếng Anh Là Gì, Các Cấp Bậc Quân đội Trong Tiếng Anh

1 Tháng Mười, 2019

Giới thiệu về bộ tiền xử lý(preprocessor)

22 Tháng Hai, 2020
MỤC XEM NHIỀU
VỀ CHÚNG TÔI
Cafedev là kênh thông tin, sự kiện, hướng dẫn và chia sẻ mọi thứ kiến thức về lập trình mới nhất được cập nhật liên tục, chính xác và đầy đủ, chuyên sâu.
Liên hệ chúng tôi: cafedevn
gmail.com
THEO DÕI CHÚNG TÔI

Chuyên mục: Hỏi Đáp