30/09/2018, 20:29
Lỗi đệ quy C/C++
mình nhập a=3 vs b=2 nó trả ra là 5
chạy debug ko hiểu tại sao tới lúc return kq=8 nó lại chạy lại kq=dequycong(a,b,kq) trong vòng if với a=2 ,b=1 vs kq=5
rồi cho mình kết quả = 5 ai có thể giúp mình chỉ ra lỗi ko?
Bài liên quan
kq+=a+b
bạn có thừa dấu + không vậy ^^kq+=a+b
nó là kq=kq+a+b
thôi bạn ah
Không có chuyện đó nhé.
Dòng đó và 2 dòng
a=--a
,b=--b
đều không có ý nghĩa . Chúng đều bị hiệu ứng lề (side effect) và không cho kết quả xác định (undefined behavior)@BetapCode bạn có thể nói rỏ hơn ko?
Chẳng hạn với dòng
a=--a
thì không thể xác định được compiler sẽ làm gì, chẳng hạn:hay
hay chẳng làm gì cả…
Nói chung theo standard C thì cách viết như trên dẫn đến UB (Undefined Behavior) và nếu đã là UB thì không có gì phải bàn cả vì mình hoàn toàn không biết chuyện gì sẽ xảy ra.
a=–a;
là a-1 rồi gán cho a bạn ơi!
@BetapCode có mail ko tui gửi cho file bạn chạy debug rồi nói cho mình hiểu mình bó tay ko hiểu tại sao rùi!
nếu muốn gán
a = a - 1;
thì bạn ghi là--a;
là đủ rồi, ko cần phải ghia = --a;
Tất cả những cái này:
đều không có ý nghĩa.
Bạn tìm hiểu thêm nhé.
mà hàm
dequycong
này để làm gì?code trên của bạn thì câu lệnh if chả có nghĩa gì cả. a = --a hay b = --b cũng vô nghĩa. Chỉ có 2 dòng có nghĩa là
kq += a + b;
vàreturn kq;
tui muốn làm đệ quy cho vui
@BetapCode vậy bạn sữa dùm tui đoạn code này đi
dùng đệ quy nha!
Mình mới học code thôi, còn gà lắm, không giúp được đâu. Bạn tự suy nghĩ làm rồi có gì thắc mắc cứ hỏi lại mọi người sẽ giúp giải quyết nhé. Như vậy nhanh lên tay hơn với lại tự làm mới vui chứ ^^
Éo mình bít lỗi rùi ko hiểu về đệ quy mà làm đệ quy