1、用c语言写一个递归算法来实现字符串逆序存储,要求不另设串存储空间。
时间: 2024-12-18 17:20:11 浏览: 8
使用递归算法来实现字符串逆序-C语言实现.zip
在C语言中,可以使用递归函数结合原地操作(即不使用额外的存储空间)来实现字符串逆序。下面是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
// 用于交换字符数组中的两个元素
void swap(char* a, char* b) {
char temp = *a;
*a = *b;
*b = temp;
}
// 递归函数,将字符串从i到j反转
void reverseString(char* str, int i, int j) {
// 递归终止条件:当i等于j时,不需要交换
if (i >= j)
return;
// 交换当前索引和倒数第二个索引的字符
swap(&str[i], &str[j]);
// 继续对剩余部分进行递归处理
reverseString(str, i+1, j-1);
}
int main() {
char str[100];
printf("请输入一个字符串: ");
fgets(str, sizeof(str), stdin); // 注意去掉末尾的换行符
str[strcspn(str, "\n")] = '\0'; // 去掉fgets获取的换行符
int length = strlen(str);
reverseString(str, 0, length - 1); // 调用递归函数
printf("逆序后的字符串: %s\n", str);
return 0;
}
```
在这个程序中,`reverseString` 函数接受字符串 `str` 和两个索引 `i` 和 `j`,如果 `i` 小于 `j`,就交换它们所指向的字符,并对剩余的子串递归调用自身,直到整个字符串都被处理完毕。
阅读全文