C++での再帰を使った文字列の反転方法


  1. ヘルパー関数を使用した方法: この方法では、再帰的なヘルパー関数を作成し、文字列を反転させます。
#include <iostream>
#include <string>
std::string reverseString(const std::string& str, int index) {
    if (index == 0) {
        return std::string(1, str[index]);
    }
    return str[index] + reverseString(str, index - 1);
}
std::string reverseString(const std::string& str) {
    return reverseString(str, str.length() - 1);
}
int main() {
    std::string input = "Hello, World!";
    std::string reversed = reverseString(input);
    std::cout << "Reversed string: " << reversed << std::endl;
    return 0;
}
  1. 文字列を引数として逆順に再帰的に結合する方法: この方法では、文字列を再帰呼び出しを使用して逆順に結合します。
#include <iostream>
#include <string>
std::string reverseString(const std::string& str) {
    if (str.length() <= 1) {
        return str;
    }
    return reverseString(str.substr(1)) + str[0];
}
int main() {
    std::string input = "Hello, World!";
    std::string reversed = reverseString(input);
    std::cout << "Reversed string: " << reversed << std::endl;
    return 0;
}
  1. 文字列の一部を交換する方法: この方法では、文字列の前後の文字を交換していきながら反転させます。
#include <iostream>
#include <string>
void reverseString(std::string& str, int start, int end) {
    if (start >= end) {
        return;
    }
    std::swap(str[start], str[end]);
    reverseString(str, start + 1, end - 1);
}
int main() {
    std::string input = "Hello, World!";
    reverseString(input, 0, input.length() - 1);
    std::cout << "Reversed string: " << input << std::endl;
    return 0;
}

これらの方法を使用すると、C++で文字列を再帰的に反転させることができます。それぞれのアプローチは異なる方法で再帰を利用していますが、同じ結果を得ることができます。どの方法を選ぶかは、個々の好みや特定の状況によります。