gpt4 book ai didi

c - C编程中带递归的反向数组

转载 作者:太空狗 更新时间:2023-10-29 16:11:21 26 4
gpt4 key购买 nike

我在尝试使用递归进行反向数组时遇到了一些问题。这是函数原型(prototype):

void rReverseAr(int ar[ ], int size); 

这是我的代码:

int main()
{
int ar[10], size, i;

printf("Enter array size: ");
scanf("%d", &size);
printf("Enter %d numbers: ", size);
for (i = 0; i<size; i++)
scanf("%d", &ar[i]);
rReverseAr(ar, size);
printf("rReverseAr(): ");
for (i = 0; i<size; i++)
printf("%d ", ar[i]);
return 0;
}

void rReverseAr(int ar[], int size) {
int start = 0, end = size - 1, temp;
if (start < end) {
temp = ar[start];
ar[start] = ar[end];
ar[end] = temp;
start++;
end--;

rReverseAr(ar, size - 1);
}
}

预期的输出应该是当用户输入 1 2 3 并且它应该返回 3 2 1 时。但是,使用这些代码,我得到的输出是 2 3 1

有什么想法吗?

最佳答案

您的代码几乎是正确的。唯一的问题是,不是从两侧“收缩”数组,而是仅从后面收缩它。

递归调用应该是这样的:

rReverseAr(ar + 1, size - 2);

你不需要增加start或减少end,因为它们的值在修改后没有被使用。

关于c - C编程中带递归的反向数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32796801/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com