完成一个递归程序,倒置字符数组。并打印实现过程 递归逻辑为: 当字符长度等于1时,直接返回 否则,调换首尾两个字符,在递归地倒置字符数组的剩下部分 输入格式c语言
时间: 2024-09-20 18:16:07 浏览: 70
在C语言中,你可以使用递归来实现一个函数,用于倒置一个字符数组。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
// 递归函数,接受一个字符指针(数组的头),数组长度以及指向剩余数组的指针
void reverse(char* arr, int len, char** tail) {
// 基线条件:如果数组只有一个元素,无需交换,直接返回
if (len == 1) {
return;
}
// 递归步骤:交换首尾元素,并将尾部指针移动到下一个位置
char temp = *(*tail);
*(*tail) = *(arr + len - 1);
*(*(arr + len - 1)) = temp;
// 更新递归调用的参数,继续处理剩下的部分
reverse(arr, len - 1, tail);
}
int main() {
char str[] = "Hello, World!";
int len = strlen(str);
printf("原始字符串: %s\n", str);
char* tail = &str[len];
reverse(str, len, &tail);
printf("倒置后的字符串: %s\n", str);
return 0;
}
```
在这个例子中,`reverse` 函数会递归地处理数组,每次调用都会改变首尾字符的位置,直到只剩下单个元素为止。`main` 函数中首先初始化了一个字符数组,并计算其长度,然后通过调用 `reverse` 函数来实现倒置,最后打印出原数组和倒置后的数组。
阅读全文