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

标签 c arrays recursion reverse

我在尝试使用递归进行反向数组时遇到了一些问题。这是函数原型(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/

相关文章:

c - 如何自定义eclipse clean project 功能?

arrays - MATLAB:使用数组输入运行向量输入函数的有效方法

c - 递归翻转数组

c - 为什么 C 代码可以在 Win32 构建时工作,但在 x64 构建时失败?

无法打开包含文件 : 'arpa/inet.h' :

Java:我应该总是用 ArrayLists 替换 Arrays 吗?

php - &Array() - 更新数组后最后一行以 & 符号为前缀

python - 递归函数计算图中从开始到结束的简单路径

javascript - 我需要使用递归来导航 DOM 中的每个元素的帮助

c - 在 C 语言中打印和清除,无需库