【发布时间】:2020-06-07 04:14:49
【问题描述】:
我不明白为什么下面的代码对此不起作用。该程序的任务是基于两个索引递归地反转字符串的一部分。对于递归的基本情况,我尝试了许多使用 swap() 和不同开始和结束条件的替代方法。我现在真的很愚蠢,我正在等待有人指出对我来说显而易见的事情。
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string recurseReverse(string str, int start, int end);
int main() {
cout << "Starting string: ";
string alphabet = "abcdefghijklmnopqrstuvwxyz";
cout << alphabet;
cout << "Passing reverse the string along with values 11 and 18 for indices." << endl;
alphabet = recurseReverse(alphabet, 11, 18);
cout << alphabet << endl;
cout << "Passing reverse the string along with values 5 and 23 for indices." << endl;
alphabet = recurseReverse(alphabet, 5, 23);
cout << alphabet << endl;
cout << "Realphebetizing the string." << endl;
sort(alphabet.begin(), alphabet.end());
cout << alphabet << endl;
cout << "Dealphebetizing the string." << endl;
alphabet = recurseReverse(alphabet, 0, 25);
cout << alphabet << endl;
return 0;
}
string recurseReverse(string str, int start, int end) {
char temp = ' ';
if(start < end) {
temp = str[end - 1];
str[end - 1] = str[end];
str[end] = temp;
str = recurseReverse(str, start, end - 1);
}
return str;
}
【问题讨论】:
-
欢迎来到 Stack Overflow!听起来您可能需要学习如何使用debugger 来单步执行您的代码。使用好的调试器,您可以逐行执行您的程序,并查看它与您期望的偏差在哪里。如果您要进行任何编程,这是必不可少的工具。进一步阅读:How to debug small programs.
-
您期望发生什么,实际发生了什么?在传入 0 和 15 的情况下,你会期望 z 先出现,a 最后出现吗?