- vừa được xem lúc

Đệ Quy trong Python

0 0 34

Người đăng: Nguyen Manh Thang

Theo Viblo Asia

Chào các bạn Trong bài này, mình sẽ giới thiệu có các bạn về khái niệm Đề Quy trong Python. Các bạn cùng tìm hiểu trong bài viết của mình nhé!


Đệ quy là gì ?

Đệ quy có nghĩa là một hàm tự gọi lại chính nó.

Một ví dụ t là đặt hai gương song song đối diện nhau. Bất kỳ đối tượng nào ở giữa chúng sẽ được phản ánh được gọi là đệ quy.


Hàm Đệ Quy trong Python

Trong Python, chúng ta biết rằng một hàm có thể gọi các hàm khác. Thậm chí có thể cho hàm tự gọi. Các loại cấu trúc này được gọi là các hàm đệ quy.

Hình ảnh sau đây cho thấy hoạt động của một hàm đệ quy được gọi là recurse.

Sau đây là một ví dụ về một hàm đệ quy để tìm giai thừa của một số nguyên.

Giai thừa của một số là tích của tất cả các số nguyên từ 1 đến số đó. Ví dụ: giai thừa của 6 (được ký hiệu là 6!) Là 1*2*3*4*5*6 = 720

Ví dụ về một hàm đệ quy
def factorial(x): """This is a recursive function to find the factorial of an integer""" if x == 1: return 1 else: return (x * factorial(x-1)) num = 3
print("The factorial of", num, "is", factorial(num))

Kết quả sẽ là

The factorial of 3 is 6

Trong ví dụ ở trên, factorial() là một hàm đệ quy vì nó gọi chính nó.

Khi chúng ta gọi hàm này với một số nguyên dương, nó sẽ gọi một cách đệ quy chính nó bằng cách giảm số

Mỗi hàm nhân số với giai thừa của số bên dưới nó cho đến khi nó bằng một. Cách gọi hàm đệ quy này có thể được giải thích theo các bước sau.

factorial(3) # 1st call with 3
3 * factorial(2) # 2nd call with 2
3 * 2 * factorial(1) # 3rd call with 1
3 * 2 * 1 # return from 3rd call as number=1
3 * 2 # return from 2nd call
6 # return from 1st call

Dưới đây là một ảnh giải thích cụ thể từng bước cách xử lý hàm đệ quy:

Đệ quy của chúng ta kết thúc khi số lượng giảm xuống 1. Đây được gọi là điều kiện bắt buộc nhé.

Lưu ý là mọi hàm đệ quy phải có một điều kiện bắt buộc để dừng đệ quy nếu không hàm đó sẽ gọi chính nó vô hạn.

Theo mặc định, depth tối đa của đệ quy là 1000. Nếu vượt qua giới hạn, nó dẫn đến lỗi Đệ quy RecursionError.

Dưới đây là ví dụ gây lỗi khi quá giới hạn depth.

def recursor(): recursor()
recursor()

Lỗi sẽ hiển thị như sau:

Traceback (most recent call last): File "<string>", line 3, in <module> File "<string>", line 2, in a File "<string>", line 2, in a File "<string>", line 2, in a [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded

Một số ưu điểm của Đệ Quy

  1. Khi sử dụng hàm Đệ Quy thì sẽ giúp code được sach sẽ và tối ưu hơn.
  2. Một yêu cầu phức tạp có thể được chia thành các task nhỏ đơn giản hơn bằng cách sử dụng đệ quy.

Kết Luận

Dưới đây mình đã giới thiệu với các bạn về khái niệm của Đệ Quy trong Python Nếu có bất kì thắc mắc gì hãy để lại comment ở phía dưới nhé.


Tham Khảo chi tiết hơn

https://www.programiz.com/python-programming/object-oriented-programming

Bình luận

Bài viết tương tự

- vừa được xem lúc

Lập Trình Hướng Đối Tượng trong Python

Chào các bạn Trong bài này, bạn sẽ tìm hiểu về Lập trình hướng đối tượng (OOP) bằng Python và khái niệm cơ bản của nó và một số các ví dụ. Các bạn cùng tìm hiểu trong bài viết của mình nhé.

0 0 50

- vừa được xem lúc

So sánh các đặc điểm của Dev khi làm việc tại Nhật và tại nước ngoài

Một bài viết gần đây trên Blog Qiita của một kỹ sư Nhật Bản đã có thâm niên làm việc lâu năm với nhiều môi trường khác nhau được tổng kết lại. Chúng ta hãy cùng đọc qua để xem tác giả có suy nghĩ như thế nào về các Dev trên thế giới nhé.

0 0 35

- vừa được xem lúc

Introductory knowledge of Internet of Things (IoT)

IoT (Internet of Things) là một hệ thống phân tích và tự động hóa tiên tiến khai thác công nghệ mạng, cảm biến, big data và trí tuệ nhân tạo để cung cấp các hệ thống hoàn chỉnh cho một sản phẩm hoặc dịch vụ. Các hệ thống này cho phép tính minh bạch, kiểm soát và hiệu suất cao hơn khi áp dụng cho bất

0 0 42

- vừa được xem lúc

Kiểm thử khả năng tiếp cận

1. Kiểm tra khả năng tiếp cận là gì. Nó là một tập hợp con của Kiểm tra khả năng sử dụng. Phần mềm nhận dạng giọng nói: Nó sẽ chuyển đổi từ được nói thành văn bản, dùng làm đầu vào cho máy tính.

0 0 42

- vừa được xem lúc

Tùy chỉnh Exceptions trong Python

Chào các bạn trong bài viết này, mình sẽ giới thiệu với các bạn về cách tùy chỉnh các Exceptions trong Python.Mình sẽ giải thích cho các bạn hiểu và cách xử dụng chúng.

0 0 36

- vừa được xem lúc

Introductory knowledge of Artificial Intelligence

Kể từ khi phát minh ra máy tính và máy móc, khả năng thực hiện các nhiệm vụ khác nhau của chúng đã tăng lên theo cấp số nhân. Con người đã phát triển hệ thống máy tính trên quan điểm các lĩnh vực làm việc đa dạng, tốc độ ngày càng tăng và kích thước ngày càng giảm theo thời gian.

0 0 28