2015-11-17 15 views
7

Chủ đề thú vị về đệ quy và tràn ngăn xếp trong lớp hôm nay và tôi tự hỏi liệu có cách nào để tăng chiều sâu đệ quy tối đa trong Python không? Đã viết một hàm nhanh để tìm giai thừa của n bằng cách sử dụng đệ quy:Làm thế nào bạn có thể tăng độ sâu đệ quy tối đa trong Python?

def factorial(n): 
    if n == 1: 
     return n 
    else: 
     return n * factorial(n-1) 

Nó có thể đối phó với giai thừa (994) nhưng không phải giai thừa (995). Lỗi được đưa ra là:

RuntimeError: maximum recursion depth exceeded in comparison 

Rõ ràng một giai thừa cao hơn có thể được tìm thấy lặp lại nhưng, vì lợi ích của đối số và mưu đồ, độ sâu đệ quy tối đa có thể tăng lên không?

+1

https://docs.python.org/2/library/sys.html#sys.setrecursionlimit – freakish

+5

Lưu ý rằng cách tiêu chuẩn để tránh quá nhiều đệ quy ở đây là sử dụng memoization. –

+2

Không, không có ghét ở đây. Tất cả chúng ta đều ở đây để giúp đỡ người khác. Đóng cửa như là một dupe không có nghĩa là chúng tôi * ghét * bạn. Tất cả tốt nhất trong tương lai. –

Trả lời

8
import sys 

sys.setrecursionlimit(2000) 
5
import sys 

iMaxStackSize = 5000 
sys.setrecursionlimit(iMaxStackSize) 
Các vấn đề liên quan