Tôi đang viết lại một số mã hiện có trong một thiết lập nơi các cuộc gọi đệ quy không dễ triển khai cũng như mong muốn. (Và trong Fortran 77, nếu bạn phải biết.) Tôi đã nghĩ về việc tạo một ngăn xếp từ đầu để theo dõi các cuộc gọi cần thiết, nhưng điều này có vẻ kludgy, và tôi không muốn cấp phát bộ nhớ cho một mảng trong trường hợp đệ quy không sâu. (Tôi không tự tin rằng Fortran 77 cũng hỗ trợ kích thước mảng động.)Viết lại một hàm đệ quy mà không sử dụng đệ quy
Bất kỳ đề xuất nào khác về cách thực hiện hàm đệ qui rõ ràng và viết lại nó không đệ quy mà không lãng phí không gian trên ngăn xếp?
Rất cám ơn, Cũ MCST
Nếu nó không nhánh bạn thường có thể viết lại nó thành một vòng lặp đơn giản. Nếu nó chi nhánh bạn thường cần một ngăn xếp – CodesInChaos
@CodeInChaos: một hàm đệ quy mà không chi nhánh sẽ, theo định nghĩa, không bao giờ trở lại ... –
Đoán tôi sử dụng sai từ chi nhánh. Tôi có nghĩa là cuộc gọi chính nó nhiều lần, do đó, đồ thị của các cuộc gọi trở thành một cây với các chi nhánh. Và đó chỉ là kinh nghiệm của tôi và không phải lúc nào cũng đúng. – CodesInChaos