- ヘルパー関数を使用した方法: この方法では、再帰的なヘルパー関数を作成し、文字列を反転させます。
#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;
}
- 文字列を引数として逆順に再帰的に結合する方法: この方法では、文字列を再帰呼び出しを使用して逆順に結合します。
#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;
}
- 文字列の一部を交換する方法: この方法では、文字列の前後の文字を交換していきながら反転させます。
#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++で文字列を再帰的に反転させることができます。それぞれのアプローチは異なる方法で再帰を利用していますが、同じ結果を得ることができます。どの方法を選ぶかは、個々の好みや特定の状況によります。