编写函数reverse(char *s)的倒序递归程序,使字符串s倒序。
时间: 2024-10-29 21:14:24 浏览: 8
当你想要编写一个递归函数来反转字符串`s`时,可以采用这样的思路:首先检查基本情况,如果字符串为空或者只有一个字符,那么返回该字符串即可。然后对于非空字符串,你可以将第一个字符与剩余部分(通过递归调用自身去掉第一个字符得到)的反转结果连接起来。
下面是一个简单的C语言实现:
```c
#include <stdio.h>
#include <string.h>
// 递归函数,接受一个指向字符数组的指针
void reverse(char* s, int start, int end) {
// 基本情况:当start等于end时,说明已经到达字符串的中心位置,直接返回
if (start >= end)
return;
// 交换开始和结束位置的字符
char temp = s[start];
s[start] = s[end];
s[end] = temp;
// 继续递归处理剩余部分
reverse(s, start + 1, end - 1);
}
// 主函数调用
void reverseString(char* s) {
reverse(s, 0, strlen(s) - 1); // 传入整个字符串以及起始和结束下标
}
int main() {
char str[] = "Hello, World!";
printf("Original string: %s\n", str);
reverseString(str);
printf("Reversed string: %s\n", str);
return 0;
}
```
这个程序会打印出原始字符串"Hello, World!"和其倒序后的"!dlroW ,olleH"。
阅读全文