C语言编写递归函数和非递归函数,对长度为n的数组进行倒置输出
时间: 2024-11-22 18:42:04 浏览: 14
简化的非递归算法如下-第5章 树和二叉树
C语言中,可以使用递归函数和非递归函数来对长度为n的数组进行倒置输出。
**递归函数示例(反转数组):**
```c
void reverse_array_recursive(int arr[], int start, int end) {
if (start >= end) { // 递归基础情况:只有一个元素或没有元素
return;
}
// 交换当前元素和末尾元素,然后递归处理剩余部分
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
reverse_array_recursive(arr, start + 1, end - 1);
}
// 调用函数
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
reverse_array_recursive(arr, 0, n - 1);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
**非递归函数示例(双指针法):**
```c
void reverse_array_iterative(int arr[], int n) {
int start = 0;
int end = n - 1;
while (start < end) {
// 交换两端的元素
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
// 移动指针
start++;
end--;
}
}
// 调用函数
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
reverse_array_iterative(arr, n);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
阅读全文