Tôi muốn in ngược một mảng các số nguyên và phát hiện ra rằng khi sử dụng ++ thay vì "startPos + 1" thì kết quả sẽ mất phần tử đầu tiên của mảng. Tôi đã gỡ lỗi để hiểu vấn đề nhưng đệ quy hoạt động kỳ lạ. Bạn có thể giải thích vấn đề là gì? Cảm ơn bạn rất nhiều.
#include
#xác định KÍCH THƯỚC 10
void printBackward(const int[], const int size, int startPosition);
int main(void)
{
const int a[SIZE] = {1,3,5,7,9,10,13,15,17,19};
printBackward(a,SIZE,0);
đặt("");
}
void printBackward(const int a[SIZE], const int size, int startPos)
{
if(startPos < kích thước)
{
printBackward(a,size,++startPos); // hoạt động sai với ++startPos
//printBackward(a,size,startPos + 1); // hoạt động bình thường
printf_s("%4d",a[startPos]);
}
}
Sẽ bắt đầuPos+1
Đã chuyển sang chức năng không thay đổi bắt đầuPos
giá trị. Nhưng,++bắt đầuPos
thực tế đã tăng lên bắt đầuPos
giá trị. Cả hai không thể thay thế cho nhau.
Tôi là một lập trình viên xuất sắc, rất giỏi!