30/09/2018, 23:48

Nhờ phát hiện lỗi hàm đệ quy kiểm tra một số nguyên dương có các chữ sô tăng dần hay không?

// Ham de quy kt so co cac chu so tang dan khong
#include <iostream>
using namespace std;

bool KTtangdan(int n)
{
	if(n < 10 )
		return false;
	if(n%10 <= (n/10)%10)
		return false;
	if(n%10 > (n/10)%10)
		return true;
	KTtangdan(n/10);
}
int main()
{
	int n;
	cin >> n;
	if(KTtangdan(n))
		cout << "Tang dan.";
	else
		cout << "Khong tang dan.";
	return 0;
}

Mình text các trường hợp đều chạy kết quả đúng.Nhưng nếu nhâp 1212 thì cho ra tăng dần, còn 121212121212 thì cho ra không tăng dần.Ai có thể giải thích không

Trọng Nghĩa viết 02:02 ngày 01/10/2018

if(n%10 > (n/10)%10)
return true;

Lỗi nằm ở đây, ví dụ số 9876545 thì theo ĐK trên hàm sẽ return true ngay, vì 5 > 4.
->Sai

Cách sửa: Bỏ hẳn đoạn code trên, thêm return true sau KTTangDan(n / 10);

Nguyễn Thiên Nhã viết 02:03 ngày 01/10/2018

bỏ đoạn đó và chỉ cần return KTtangdan(n/10).Mình text ra kết quả đúng rồi

Bài liên quan
0