Một hàm gọi chính nó là một hàm đệ quy. Phương pháp này được sử dụng khi một vấn đề nào đó được xác định theo chính nó. Mặc dù điều này liên quan đến việc lặp đi lặp lại, nhưng việc sử dụng cách tiếp cận lặp lại để giải quyết vấn đề như vậy có thể rất tẻ nhạt. Cách tiếp cận đệ quy cung cấp một giải pháp rất ngắn gọn cho một vấn đề có vẻ phức tạp. Nó trông quyến rũ nhưng có thể khó hiểu Show
Ví dụ phổ biến nhất của đệ quy là tính giai thừa. Về mặt toán học, giai thừa được định nghĩa là. N. = n * (n-1) Chúng ta sử dụng chính giai thừa để xác định giai thừa. Do đó, đây là trường hợp thích hợp để viết hàm đệ quy. Hãy để chúng tôi mở rộng định nghĩa trên để tính giá trị giai thừa của 5
Mặc dù chúng ta có thể thực hiện phép tính này bằng vòng lặp, nhưng chức năng đệ quy của nó liên quan đến việc gọi nó liên tục bằng cách giảm số cho đến khi đạt 1. Sau đây là một hàm đệ quy để tính giai thừa Thí dụ. Hàm đệ quy Sao chép
Hàm đệ quy trên có thể được gọi như dưới đây >>> giai thừa(5)5 * 4 * 3 * 2 * 1 120 Khi hàm giai thừa được gọi với 5 làm đối số, các lệnh gọi liên tiếp đến cùng một hàm được đặt, đồng thời giảm giá trị của 5. Các hàm bắt đầu quay lại lệnh gọi trước đó sau khi đối số đạt đến 1. Giá trị trả về của lệnh gọi đầu tiên là tích lũy của các giá trị trả về của tất cả các lệnh gọi Đệ quy là một phương pháp lập trình, trong đó một hàm gọi chính nó một hoặc nhiều lần trong phần thân của nó. Thông thường, nó trả về giá trị trả về của lệnh gọi hàm này. Nếu một định nghĩa hàm tuân theo đệ quy, chúng ta gọi hàm này là hàm đệ quy Hàm đệ quy phải kết thúc để được sử dụng trong chương trình. Nó kết thúc, nếu với mỗi lần gọi đệ quy, giải pháp của vấn đề trở nên nhỏ hơn và chuyển sang trường hợp cơ sở, trong đó vấn đề có thể được giải quyết mà không cần đệ quy thêm. Một đệ quy có thể dẫn đến một vòng lặp vô hạn, nếu trường hợp cơ sở không được đáp ứng trong các cuộc gọi Thí dụĐoạn mã sau trả về tổng của n số tự nhiên đầu tiên bằng cách sử dụng hàm đệ quy python def sum_n(n): if n== 0: return 0 else: return n + sum_n(n-1) Điều này in tổng của 100 số tự nhiên đầu tiên và 500 số tự nhiên đầu tiên print(sum_n(100)) print(sum_n(500)) đầu raC:/Users/TutorialsPoint1/~.py 5050 125250 Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu về các hàm đệ quy Python và cách sử dụng chúng để đơn giản hóa mã của bạn Giới thiệu về hàm đệ quyMột hàm đệ quy là một hàm gọi chính nó cho đến khi nó không Hàm 3 sau đây là hàm đệ quy vì nó có lời gọi đến chính nó
Trong hàm 3, 5 có nghĩa là mã khác Ngoài ra, một hàm đệ quy cần có một điều kiện để ngừng gọi chính nó. Vì vậy, bạn cần thêm một câu lệnh if như thế này
Thông thường, bạn sử dụng hàm đệ quy để chia một bài toán lớn khó giải thành các bài toán nhỏ dễ giải hơn Trong lập trình, bạn sẽ thường thấy các hàm đệ quy được sử dụng trong cấu trúc dữ liệu và thuật toán như cây, đồ thị và tìm kiếm nhị phân Ví dụ hàm đệ quy PythonHãy lấy một số ví dụ về việc sử dụng các hàm đệ quy Python 1) Một ví dụ về hàm đệ quy đơn giản trong PythonGiả sử bạn cần phát triển chức năng đếm ngược đếm ngược từ một số cụ thể về 0 Ví dụ: nếu bạn gọi hàm đếm ngược từ 3, nó sẽ hiển thị đầu ra sau 0Phần sau định nghĩa hàm 6 2Nếu bạn gọi hàm 6 ngay bây giờ 4…nó sẽ chỉ hiển thị số 3 Để hiển thị các số 3, 2 và 1, bạn cần phải
Để làm như vậy, bên trong hàm 6, bạn sẽ cần xác định logic để gọi hàm 6 với đối số 2 và 1 Để làm điều đó, bạn cần thực hiện đệ quy hàm 6 Phần sau đây định nghĩa một hàm 6 đệ quy và gọi nó bằng cách chuyển số 3 def sum_n(n): if n== 0: return 0 else: return n + sum_n(n-1)2 Nếu bạn thực hiện chương trình, bạn sẽ thấy lỗi sau def sum_n(n): if n== 0: return 0 else: return n + sum_n(n-1)3 Lý do là 6 tự gọi vô thời hạn cho đến khi hệ thống dừng nó Vì bạn cần ngừng đếm ngược khi số về 0. Để làm như vậy, bạn thêm một điều kiện như thế này def sum_n(n): if n== 0: return 0 else: return n + sum_n(n-1)5 đầu ra 0Trong ví dụ này, hàm 6 chỉ gọi chính nó khi số tiếp theo lớn hơn 0. Nói cách khác, nếu số tiếp theo bằng 0, nó sẽ ngừng gọi chính nó 2) Sử dụng hàm đệ quy để tính tổng của một dãy sốGiả sử rằng bạn cần tính tổng của một dãy e. g. , từ 1 đến 100. Một cách đơn giản để làm điều này là sử dụng vòng lặp for với hàm range() Phương pháp có thể được đệ quy?Trong chương này, chúng ta khám phá một trong những điều kỳ diệu nhất mà một phương thức có thể làm. gọi chính nó để giải quyết một phiên bản nhỏ hơn của cùng một vấn đề. Phương thức gọi chính nó được gọi là đệ quy .
Tại sao Python không tốt cho đệ quy?Điều này là do Python có phí gọi hàm trong đó trình thông dịch thực hiện kiểm tra kiểu động của các đối số hàm được thực hiện trước và sau khi gọi hàm, dẫn đến độ trễ thời gian chạy bổ sung
Các phương thức đệ quy có nhanh hơn các vòng lặp không?Tốc độ. Chúng ta có thể nói rằng nếu chúng ta giữ nguyên tất cả các yếu tố khác, thì đệ quy sẽ chậm hơn vòng lặp . Điều này là như vậy bởi vì đệ quy thêm chức năng gọi chi phí vào quá trình thực thi của nó. Và điều đó làm cho nó chậm hơn so với lặp lại.
Ý nghĩa đệ quy trong Python là gì?Hàm đệ quy là hàm được định nghĩa theo chính nó thông qua các biểu thức tự tham chiếu . Điều này có nghĩa là hàm sẽ tiếp tục gọi chính nó và lặp lại hành vi của nó cho đến khi một số điều kiện được đáp ứng để trả về kết quả. |