Hàm chạy vô tận khi gọi đệ quy

void Nhapdl(int &n) {
	fflush(stdin);
	std::cout << "Nhap n: ";
	std::cin >> n;
	if (n <= 0) {
		std::cout << "SO KHONG HOP LE\n";
		Nhapdl(n);
	}

}

Cho mình hỏi là tại sao khi nhập vào là 1 ký tự không phải số thì chương trình chạy vô tận mà không dừng lại để nhập số khác ?

Bạn sửa lại thành thế này để biến n nó giảm dần về 0, khi n còn lớn hơn 0 thì khối lệnh trong if còn được thực hiện.

Nhapdl(n-1);
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?