【发布时间】:2020-07-17 21:15:20
【问题描述】:
抱歉这个菜鸟问题。 我在课堂上有以下作业代码(包括作业描述):
编写一个程序,要求用户输入一个字符串,然后将其传递给一个 void 递归函数,该函数反向显示该字符串。该函数的原型是:
void reverse(string s, int i);函数调用将是:
reverse(strIn, strIn.length());典型的运行将是:
输入一个字符串:
四分和七年前..
.. oga sraey neves dna erocs ruoF
// Actual code
#include <iostream>
#include <string>
void reverse(std::string, int);
int main() {
std::string input;
std::cout << "Enter a string." << std::endl;
getline(std::cin, input);
int i = input.length() - 1;
reverse(input, i);
return 0;
}
void reverse(std::string input, int i) {
while (i >= 0) {
std::cout << input.at(i);
i--;
reverse(input, i);
}
}
我假设每次减去 1 将显示字符串中的最后一个字符,并将循环条件设置为 i >= 0 将使循环在字符串中没有更多字符时终止。但我得到以下输出:
sleepy@mooncell ~/CMPSC121/Activities $ ./a.out
Enter a string.
help
plehhehhlehhehh
我无法弄清楚我在这里做错了什么。非常感谢您的帮助!
【问题讨论】:
-
您的循环确实终止了...问题是您的程序逻辑需要
if而不是while -
使用递归时不需要循环
-
@EduardoPascualAseff 谢谢,这解决了我的问题!
标签: c++ loops recursion while-loop