两种递归调用方法实现字符串逆序输出

题目:编写一个递归函数,将输入的字符串逆序输出。

要求:使用递归方式实现。

提示:逆序字符串即将字符串中的字符顺序颠倒过来。
例如,将字符串"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;
}