30/09/2018, 16:15
Dùng danh sách liên kết trong đệ quy để thực hiện tính 10^9
em có một bài toán cần tính một số thứ 10^9. Em sử dụng cách đệ quy vì số phần tử tối đa của một array không lên đến 10^9(em khai báo array được khoảng 10000 thì hết ). Nhưng khi em test thử số thứ 11 thì bị overflow(em nghĩ là do nó lưu nhiều giá trị quá). liệu em có thể dùng danh sách liên kết cho trường hợp này không ?
Bài liên quan
Không nên đâu, đệ quy là cần phải tránh trong mấy trường hợp tính toán nhiều. Loop nhiều quá nó bị stack overflow.
Được đấy, nhưng em tính dùng như thế nào.
em vừa sửa lại code không dùng đệ quy nữa
em định dùng danh sách liên kết để lưu giá trị vì bài toán của em chỉ cần gọi lại 2 giá trị trước đó kế tiếp. À, ở đây cho em hỏi luôn là khi mà mình đệ quy thì giá trị được lưu ở đâu? nó khác với lưu giá trị của biến không ?
p/s: cách em mới sửa cũng chỉ mới tính được số thứ 32000
lưu trong stack, mà stack chỉ có giới hạn dung lượng thôi (tùy vào hệ điều hành). Nên khi đệ quy gọi lại hàm nhiều quá, nó bị tràn. Người ta gọi là stack overflow.
cảm ơn anh Đạt
mà cho em hỏi nếu mình khai báo
char a[M]
thì M tối đa là bao nhiêu ?Phụ thuộc vào bộ nhớ tại thời điểm đó nó còn dư bao nhiêu em. Câu này phụ thuộc phần cứng + hệ điều hành. Mà anh lại ko nắm 2 cái này nên khó trả lời lắm
P/S: Nhưng anh thử google trên mạng với câu hỏi này. Trong điều kiện không quan tâm đến phần cứng. Tức là phần cứng có thể đáp ứng được mọi nhu cầu thì tối đã sẽ tạo được một mảng với kích thước
SIZE_MAX
bằng với 21024-1What is the maximum size of an array in C?