cuốn sách gpt4 ai đã làm

Tình huống C++ khó hiểu

In lại Tác giả: Walker 123 Thời gian cập nhật: 27-11-2023 23:28:53 27 4
mua khóa gpt4 Nike

Đây thực sự là một câu hỏi ngu ngốc nhưng tôi cần một chút an ủi/giúp đỡ. Tôi có tình huống "đệ quy" hiện tại:

void add(giá trị int)
{
// làm điều gì đó...//

nếu (điều kiện) {
thêm (myVal);
acc = 0;
}
}

Vấn đề của tôi là biến tài khoản Cuối cùng sẽ được đặt thành không. Có phải vậy không? Ngay cả khi điều kiện không đúng ở lần thứ hai (khi đệ quy). Nó sẽ kết thúc việc thực thi chức năng và tiếp tục với tài khoản Đặt thành 0..Tôi nghĩ/hy vọng?

Cảm ơn!

EDIT: Tôi không đăng mã đầy đủ vì tôi không nghĩ nó cần thiết. Hơi dài một chút. Điều đáng nói làtình trạng Không phải lúc nào cũng đúng. Do đó, đệ quy này không phải là vô hạn.

Chỉnh sửa 2: Số lần đệ quy tối đa là 2. Nghĩa là, nếu điều kiện đúng ở lần đầu tiên thì kết quả sẽ sai ở lần thứ hai (khi đệ quy), do đó tránh được vòng lặp vô hạn. Để làm rõ câu hỏi của tôi: Trước tiên hãy xem xét trường hợp điều kiện đúng, do đó đệ quy xảy ra. Khi hàm hoàn thành (kết quả sẽ sai trong quá trình đệ quy) và thoát, nó sẽ thoát về hàm ban đầu và cũng sẽ thoát. Khi thoát ra, nó có tiếp tục ở nơi đã dừng lại không, tức là đặt acc=0 rồi quay lại? Một trong những câu trả lời dưới đây cung cấp một lời giải thích tốt về điều này.

câu trả lời hay nhất

Giả sử rằng thêm vào Đúng vậy, cuộc gọi đệ quy trả về bên trong hàm thực hiện cuộc gọi đệ quy trước tiên tài khoản Giá trị của thực sự sẽ được đặt thành 0. Bạn có thể nghĩ mã hoạt động như thế này:

nếu (điều kiện) {
thực hiện cuộc gọi tới add(myVal);
đợi cuộc gọi đó quay lại;
acc = 0;
}

Tuy nhiên, một chi tiết quan trọng là giả sử tài khoản là một biến cục bộ trong hàm, nó sẽ chỉ đang gọi điện chức năng được đặt thành 0, không phải cuộc gọi đệ quy bạn đã thực hiện. Ví dụ: nếu mã của bạn trông như thế này:

void add(giá trị int)
{
int acc = 1;
cout << acc << endl;

nếu (điều kiện) {
thêm (myVal);
acc = 0;
}
}

Sau đó, nếu bạn thực hiện lệnh gọi đệ quy mà bạn đã chỉ định, trong lệnh gọi đệ quy cout Đầu ra của câu lệnh vẫn sẽ là 1,bởi vì Giá trị của acc trong lệnh gọi đệ quy cụ thể này độc lập với các cuộc gọi đệ quy khác tài khoản giá trị.

Hy vọng điều này sẽ giúp!

Về c++ - Tình huống C++ khó hiểu, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/7235188/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress