c语言递归求倒数组
时间: 2025-05-01 11:37:34 浏览: 10
### 使用递归来反转数组
在C语言中,可以通过递归的方式来实现数组的反转。以下是基于递归逻辑编写的代码示例:
#### 代码实现
```c
#include <stdio.h>
// 定义递归函数用于反转数组
void reverseArray(int arr[], int start, int end) {
if (start >= end) {
return; // 当起点大于等于终点时停止递归
}
// 交换首尾元素
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
// 对剩余部分继续递归处理
reverseArray(arr, start + 1, end - 1);
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Original array:\n");
for (int i = 0; i < n; ++i) {
printf("%d ", arr[i]);
}
// 调用递归函数反转数组
reverseArray(arr, 0, n - 1);
printf("\nReversed array:\n");
for (int i = 0; i < n; ++i) {
printf("%d ", arr[i]);
}
return 0;
}
```
#### 解析
上述代码实现了通过递归方式反转数组的功能。具体过程如下:
- **参数说明**:`reverseArray` 函数接受三个参数——数组 `arr`、起始索引 `start` 和终止索引 `end`。
- **递归条件**:当 `start` 大于或等于 `end` 时,表示已经完成整个数组的反转操作[^1]。
- **核心逻辑**:每次递归调用前,先交换当前头尾位置上的元素;随后调整范围缩小问题规模,即对子区间 `[start+1, end-1]` 进行相同的操作。
此方法的时间复杂度为 O(n),其中 n 是数组长度,因为每个元素恰好被访问并交换一次[^4]。
---
#### 输出样例
对于输入数组 `{1, 2, 3, 4, 5}`,运行结果如下:
```
Original array:
1 2 3 4 5
Reversed array:
5 4 3 2 1
```
---
阅读全文
相关推荐


















