return

Trong C/C++, khi bạn có nhu cầu dùng hàm đúng/sai thì thường bên trong sẽ có các lệnh return 0 và return 1 (hoặc return 0 và return một giá trị khác 0).

Lý do là vì câu lệnh if (value) sẽ đúng nếu value khác 0, và sai nếu value bằng 0.

Khi đó, hàm return 0 và 1 cũng tương đương với return sai và đúng khi kiểm tra bằng câu lệnh if (tên hàm(tham số))

Với hàm SNT của bạn, là hàm dùng để kiểm ra một số có nguyên tố hay không => nó là một hàm đúng/sai, vì vậy, nó return 0 và 1 để tương ứng cho hai trường hợp: không phải số nguyên tố (sai) và số nguyên tố (đúng).

Logic của nó khá đơn giản:

1.

if (n==1) return 0;

Nếu N=1 thì return 0 (sai, không phải số nguyên tố)

2.

if (n<4) return 1;

Nếu N<4, suy ra N=2 hoặc 3 (không thể bằng 1, vì nếu bằng 1 thì hàm đã return từ câu lệnh trước rồi). Đây là 2 số nguyên tố, nên return 1 (đúng)

3.

for (int i=2;i<=sqrt((float)n);i++)

if (n%i==0) return 0;

Có suy luận toán học sau: Một số tự nhiên N nếu chia hết cho 1 số tự nhiên i khác 1 thì nó phải có dạng N=i*j trong đó i nhỏ hơn hoặc bằng căn của N, và j thì lớn hơn hoặc bằng căn của N

Vậy, chỉ cần kiểm tra xem N có chia hết cho số nào trong khoảng từ 2 đến căn của N hay không là biết N có chia hết cho số tự nhiên khác 1 nào hay không

Vòng lặp này dùng để kiểm tra điều đó, nếu nó phát hiện ra N chia hết cho 1 số trong khoảng từ 2 đến căn N => N không nguyên tố, return 0 (sai)

4.

return 1;

Nếu hàm chạy đến lệnh này, thì tức là nó đã không chạy lệnh return 0; ở phần 3. => N không chia hết cho số tự nhiên khác 1 nào (như suy luận toán học ở trên) => N nguyên tố, return 1 (đúng)

Vậy là giải thích xong toàn bộ các lệnh return 0 (N không phải số nguyên tố) và return 1 (N là số nguyên tố) trong hàm SNT

Ở bên ngoài, giả sử muốn kiểm tra số int k; có nguyên tố hay không thì ta có thể dùng lệnh kiểm tra đúng/sai kiểu:

if (SNT(k)) cout << "Nguyen to" << endl; else cout << "Khong nguyen to" << endl;

Ngoài các hàm đúng sai, thì trong C/C++ ta còn có nhu cầu viết nhiều loại hàm khác, và giá trị return rất phong phú chứ không bó hẹp trong hai khái niệm đúng/sai nữa.

Khi đó, việc return gì thì hoàn toàn do bạn quy ước, và người ta thường return giá trị âm để báo lỗi, return 0 để báo success (cũng có trường hợp return 1 để báo success - như mình nói, hoàn toàn do bạn quy ước)

return là chỉ kết quả trả về của 1 hàm

VD:

int cong(int a, int b)

{

s = a+b;

return s;

}

nó sẽ trả về kết quả của s kiểu int

mình nói gì sai các cao thủ bỏ quả và chỉnh sửa. thanks

int lasonguyento(int k)

{

int d=0;

for(int i=1;i<=k;i++)

if(k%i==0)

d++;

if(d==2)

return 1;

return 0;

}

...

Cho phep minh noi len suy nghi cua minh nhe!!!!!!

Lệnh return dùng để tra về cho hàm giá trị kèm theo cua nó.Ví như khi return 1 thì ham đó có giá trị là 1. Cụ thể hơn với ví dụ tính cộng của bạn "Wonchinh" là khi bạn gọi lại hàm đó bằng phép gán: a=cong(a,b) thì khi xuất ra màn hình cho ta kết quả a=s(s là giá trị đã tính khi thay a. b bằng số cụ thể)

Còn về thắt mắt trong hàm của bạn viết thì muốn hiểu lệnh return trước tiên bạn phải hiểu đoạn chương trình cua mình đã.Ở đây mình chỉ giải thích đoạn có liên quan tới lenh return thoi nha.sau khi thực hiện vòng lặp for thì d sẽ có một giá tri nào đó. Khi d=2 thì return 1 (số 1 nghĩa là đúng hay nói cách khác k là số nguyên tố) và khi return 0 (lúc d!=2 chương trình sẽ thực hiện lệnh này va số 0 nghĩa là sai hay k không là số nguyên tố).Mà bạn ơi số 0 hay số 1, cái nào là số nguyên tố cái nào không là tùy ta định nghĩa thôi bạn ak, điều quan trọng là bạn nhớ kỹ để khi gọi hàm lại nó cho kết quả số nào thì ta còn biết ý nghĩa mà làm bài tiếp.

Chúc bạn hoc tốt nhen!!!!!!!

-à mình bị nhầm chỗ bool!

-mình thấy khó hiểu cái lệnh return này quá! mình thấy nên là return d là ok (theo mình hiểu), còn tại sao phải có if(d==2), biết rằng return 1, return 0 ở đây là đúng và sai, nhưng nguyên lí hoạt động của nó như thế nào thì mình chưa hiểu lắm, bạn nào rành chỉ kĩ giúp mình với, đây là hàm nằm trong code đếm phần tử là số nguyên tố - code của thầy nên mình nghĩ chắc không sai đâu!

Trả lời ngay kèm theo trích dẫn này

Bạn đang đọc truyện trên: AzTruyen.Top

Tags: #return