30/09/2018, 16:45
về biến trong hàm đệ quy
nếu mình giữ comment thì chương trình chạy đúng, bỏ đi thì sai. biến string đã làm gì count
p/s: chương trình tính độ dài chuỗi theo đệ quy
#include <iostream>
#include <cstring>
#include <conio.h>
using namespace std;
int countChar(int count)
{
char a = getche();
//string name = a + name;
if (a == 13)
{
cout << endl;
return count;
}
else countChar(count + 1);
}
int main()
{
cout << "Enter string: " << endl;
int length = countChar(0);
cout << "Length of string: " << length;
return 0;
}
Bài liên quan
Cái này không liên quan gì đến đệ quy cả. Viết dòng này ở đâu cũng lỗi.
Ở đây bạn sử dụng biến
name
mà chưa gán giá cho nó.em đã sửa lại và gán giá trị cho string nhưng chương trình vẫn chạy sai, quan trọng em muốn hỏi là biến count(biến đếm ký tự) tại sao lại không đếm đúng nữa khi thêm bỏ comment. nó cho ra 1 kết quả rất to tới cả chục nghìn, mặc dù dòng comment không hề tác động đến biến count. có gì sai sót, mong anh giải đáp
Cho anh xem code mới thử xem
như em nói ở trên, nếu bỏ string đi(dòng 9 và 10 thành comment) thì chương trình chạy đúng(biến count đếm đúng), thêm string vào, theo em thì nó không ảnh hưởng gì đến biến count và chương trình nhưng tại sao count lại cho ra 1 kết quả rất to(sai)
chương trình này sẽ chạy đúng khi dòng 9 và 10 thành comment
mong anh giải đáp
=>
Lỗi là do đệ quy ở else bạn không trả về kết quả nên nó lấy giá trị rác. Có thể giá trị trả về là ở trong thanh ghi sót lại