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
Bài liên quan
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);
bỏ đoạn đó và chỉ cần return KTtangdan(n/10).Mình text ra kết quả đúng rồi