两种递归调用方法实现字符串逆序输出
题目:编写一个递归函数,将输入的字符串逆序输出。
要求:使用递归方式实现。
提示:逆序字符串即将字符串中的字符顺序颠倒过来。
例如,将字符串"Hello, World!“逆序输出为”!dlroW ,olleH"。
第一种:交换数组位置
#include <stdio.h>
#include <string.h>
void reverseString(char str[100], int left, int right) {
if (left < right) {
char temp = str[left];
str[left] = str[right];
str[right] = temp;
reverseString(str, left+1, right-1);
}
}
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
int left = 0;
int right = strlen(str) - 1;
reverseString(str, left, right);
printf("逆序后的字符串为:%s\n",str);
return 0;
}
第二种:指针变量接收地址
#include <stdio.h>
void reverseString(const char* str) {
// 当遍历到字符串的末尾(即遇到空字符'\0')时停止递归
if (*str == '\0') {
return;
}
// 传入下一个字符的地址,实现逆序输出
reverseString(str + 1);
// 输出当前字符
printf("%c", *str);
}
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
printf("逆序后的字符串为:");
reverseString(str);
printf("\n");
return 0;
}