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 ?

Nguyễn Minh Dũng viết 18:24 ngày 30/09/2018

Em sử dụng cách đệ quy

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.

liệu em có thể dùng danh sách liên kết cho trường hợp này không ?

Được đấy, nhưng em tính dùng như thế nào.

Minh Hoàng viết 18:27 ngày 30/09/2018

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

Nguyễn Minh Dũng viết 18:16 ngày 30/09/2018

khi mà mình đệ quy thì giá trị được lưu ở đâu

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.

Minh Hoàng viết 18:17 ngày 30/09/2018

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 ?

Nguyễn Minh Dũng viết 18:20 ngày 30/09/2018

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-1

179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137215 bytes
stackoverflow.com
Keith Thompson

What is the maximum size of an array in C?

c, arrays
answered by Keith Thompson on 11:38PM - 21 Feb 12
Bài liên quan
0