Hướng dẫn how to stop recursion in python - làm thế nào để dừng đệ quy trong python
Tôi có một hàm đệ quy cố gắng tạo thành một khoản tiền nhất định được đưa ra một danh sách các số nguyên. Các chức năng hoạt động nhưng nó cung cấp cho tôi tất cả các giải pháp có thể. Tôi muốn thoát ra khỏi chức năng đệ quy sau khi tìm thấy một giải pháp. Làm thế nào tôi có thể làm điều đó? Dưới đây là mã (giả-) cho hàm: Show
Vì vậy, tôi chỉ muốn biết liệu Target_Sum có thể được hình thành bởi danh sách các số nguyên hay không, tôi không cần tất cả các giải pháp. Hỏi ngày 25 tháng 4 năm 2015 lúc 10:12Apr 25, 2015 at 10:12
Bạn cần kiểm tra giá trị trả về của cuộc gọi đệ quy; Nếu
Đã trả lời ngày 25 tháng 4 năm 2015 lúc 10:14Apr 25, 2015 at 10:14
Martijn Pieters ♦ Martijn Pieters♦Martijn Pieters 994K277 Huy hiệu vàng3917 Huy hiệu bạc3259 Huy hiệu đồng277 gold badges3917 silver badges3259 bronze badges 0 Bạn có thể sử dụng lớp học. Khởi tạo một biến self.flag = false trong phương thức init, khi bạn tìm thấy giải pháp thay đổi self.flag = true và không trả về khi self.flag là đúng.init method, when you find the solution change self.flag = True and return None when self.flag is True.
Đã trả lời ngày 23 tháng 9 năm 2020 lúc 4:50Sep 23, 2020 at 4:50
Theja mtheja mTheja M Huy hiệu 641 Bạc1 Huy hiệu Đồng1 silver badge1 bronze badge Khi bạn tìm thấy giải pháp chỉ cần trả lại và sử dụng sys.exit (0) ngay trong dòng tiếp theo, nó sẽ dừng các cuộc gọi đệ quy thêm và đưa bạn ra ngay lập tức. Đã trả lời ngày 9 tháng 10 năm 2019 lúc 12:42Oct 9, 2019 at 12:42
Trong hướng dẫn này, bạn sẽ học cách tạo một hàm đệ quy (một hàm tự gọi). Đệ quy là gì?Đệ quy là quá trình xác định một cái gì đó theo chính nó. Một ví dụ thế giới vật lý sẽ là đặt hai gương song song đối diện nhau. Bất kỳ đối tượng ở giữa chúng sẽ được phản ánh đệ quy. Chức năng đệ quy PythonTrong Python, chúng ta biết rằng một hàm có thể gọi các chức năng khác. Thậm chí có thể cho chức năng gọi chính nó. 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 gọi là Sau đây là một ví dụ về hàm đệ quy để tìm giai thừa của một số nguyên. Factorial của một số là sản phẩm của tất cả các số nguyên từ 1 đến số đó. Ví dụ: giai thừa của 6 (ký hiệu là 6!) Là 1*2*3*4*5*6 = 720. Ví dụ về hàm đệ quy
Đầu ra The factorial of 3 is 6 Trong ví dụ trên, 0 là một hàm đệ quy như nó tự gọi.Khi chúng ta gọi hàm này với số nguyên dương, nó sẽ tự gọi mình bằng cách giảm số. Mỗi hàm nhân số số với giai thừa của số bên dưới nó cho đến khi nó bằng một. Cuộc gọi đệ quy này có thể được giải thích trong 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 Chúng ta hãy xem một hình ảnh hiển thị một quá trình từng bước về những gì đang diễn ra: Làm việc của một chức năng giai thừa đệ quyĐệ quy của chúng tôi kết thúc khi số lượng giảm xuống 1. cái này được gọi là điều kiện cơ sở. Mỗi chức năng đệ quy phải có một điều kiện cơ sở dừng đệ quy hoặc nếu không thì hàm tự gọi chính nó. Thông dịch viên Python giới hạn độ sâu của đệ quy để giúp tránh các đệ quy vô hạn, dẫn đến tràn chồng. Theo mặc định, độ sâu tối đa của đệ quy là 1000. Nếu giới hạn được vượt qua, nó sẽ dẫn đến 1. Hãy nhìn vào một điều kiện như vậy.
Đầu ra Traceback (most recent call last): File " Ưu điểm của đệ quy
Nhược điểm của đệ quy
Làm thế nào để bạn dừng một chức năng đệ quy trong Python?Một hàm đệ quy yêu cầu một trường hợp cơ sở để dừng thực thi và cuộc gọi đến chính nó dần dần dẫn đến chức năng cho trường hợp cơ sở.requires a base case to stop execution, and the call to itself which gradually leads to the function to the base case.
Làm thế nào để bạn ngừng đệ quy?Để ngăn chặn đệ quy vô hạn, bạn có thể sử dụng nếu ... câu lệnh khác (hoặc cách tiếp cận tương tự) trong đó một nhánh thực hiện cuộc gọi đệ quy và cái kia thì không.Vì vậy, nó thường trông như thế này.hàm recurse () {if (điều kiện) {recurse ();} other {// ngừng gọi recurse ()}} recurse ();use if...else statement (or similar approach) where one branch makes the recursive call, and the other doesn't. So, it generally looks like this. function recurse() { if(condition) { recurse(); } else { // stop calling recurse() } } recurse();
Làm thế nào để bạn ngăn chặn đệ quy vô hạn trong Python?Để ngăn chặn đệ quy vô hạn, bạn cần ít nhất một nhánh (tức là câu lệnh IF/ELSE) không thực hiện cuộc gọi đệ quy.Các chi nhánh không có cuộc gọi đệ quy được gọi là trường hợp cơ sở;Các nhánh với các cuộc gọi đệ quy được gọi là các trường hợp đệ quy.Các chức năng cũng có thể được đệ quy lẫn nhau.you need at least one branch (i.e. of an if/else statement) that does not make a recursive call. Branches without recursive calls are called base cases; branches with recursive calls are called recursive cases. Functions can also be mutually recursive. |