Đôi khi trong các cuộc phỏng vấn, tôi có thể sử dụng đệ quy để giải quyết vấn đề (chẳng hạn như thêm 1
vào một số nguyên chính xác vô hạn) hoặc khi vấn đề xuất hiện phù hợp để sử dụng đệ quy. Đôi khi, có thể chỉ là do sử dụng đệ quy rất nhiều để giải quyết vấn đề, do đó, không cần suy nghĩ nhiều, đệ quy được sử dụng để giải quyết vấn đề.
Tuy nhiên, những cân nhắc trước khi bạn có thể quyết định nó là phù hợp để sử dụng đệ quy để giải quyết vấn đề?
Một số suy nghĩ tôi đã có:
Nếu chúng ta sử dụng đệ quy trên dữ liệu bị giảm một nửa mỗi lần, có vẻ như không có vấn đề gì khi sử dụng đệ quy, vì tất cả dữ liệu có thể vừa với 16GB RAM, hoặc thậm chí là ổ cứng 8TB, có thể được xử lý bằng cách đệ quy chỉ sâu 42 cấp. (vì vậy không có tràn ngăn xếp (Tôi nghĩ trong một số môi trường, ngăn xếp có thể sâu 4000 cấp, hơn 42, nhưng đồng thời, nó cũng phụ thuộc vào số lượng biến cục bộ của bạn, vì mỗi ngăn xếp cuộc gọi, chiếm nhiều bộ nhớ hơn nếu có nhiều biến cục bộ và kích thước bộ nhớ, không phải mức, sẽ xác định tràn ngăn xếp)).
Nếu bạn tính toán các số Fibonacci bằng cách sử dụng đệ quy thuần túy, bạn thực sự phải lo lắng về độ phức tạp của thời gian, trừ khi bạn lưu trữ các kết quả trung gian.
Và làm thế nào về việc thêm 1
vào một số nguyên chính xác vô hạn? Có thể điều đó gây tranh cãi, vì, bạn sẽ làm việc với các số có 3000 chữ số dài hay 4000 chữ số, lớn đến mức có thể gây ra lỗi tràn ngăn xếp? Tôi không nghĩ về nó, nhưng có lẽ câu trả lời là không, chúng ta không nên sử dụng đệ quy, mà chỉ sử dụng một vòng lặp đơn giản, bởi vì nếu trong một số ứng dụng, con số thực sự cần phải dài 4000 chữ số, để kiểm tra một số các thuộc tính của số, chẳng hạn như số đó có phải là số nguyên tố hay không.
Câu hỏi cuối cùng là: những cân nhắc trước khi bạn có thể quyết định sử dụng đệ quy để giải quyết vấn đề là gì?
1
vào số nguyên chính xác vô hạn? Bạn có thể nói, vâng, chúng giảm xuống một vấn đề nhỏ hơn, nhưng đệ quy thuần túy không phù hợp với nó