我正在寻找关于作业分配的一些快速提示。我们遇到了一些问题,并且必须编写两个关于如何通过迭代和递归分别解决问题的快速程序。我相信这比我想象的要容易,但是我对这两者很容易感到困惑。我绝不希望任何人为我完全解决问题,我不会学到任何东西!但如果你能看看我目前为止的情况,并告诉我是否正朝着正确的方向前进。此外,代码不需要编译,我们的教授希望我们对迭代与递归的差异有一个大致的了解。C++编程迭代和递归
问题:检查字符串以查看它是否是回文。
我的解决方案 - 我认为这是迭代求解:
bool iterative_palindrome (const string& str) {
string line, result;
stack <char> stack_input;
//user enters string, program takes it
cout << "Enter string: " << endl;
while (getline (cin, line) && (line != "")) {
//push string into stack
for (size_t i = 0; i < line.size(); i++) {
stack_input.push(line[i]);
//create reverse of original string
while (!stack_input.empty()) {
result += stack_input.top();
stack_input.pop();
return result;
}
//check for palindrome, empty string
if (line == result || line = "0" || line.empty()) {
return true;
cout << line << " is a palindrome!" << endl;
} else {
return false;
cout << line << " is NOT a palindrome." << endl;
cout << "Enter new string: " << endl;
}
}
}
}
我提醒大家的是,我非常新的这个东西。我已经阅读了一些东西,但是我仍然很难把这个东西包裹起来。
line =“0”是一项任务而不是比较。此外,返回后的代码根本不会执行。 – imreal
你被要求使用堆栈吗?你比这更难以做到。 – Duck
不一定非要使用堆栈,但是我们的教授花了很多时间来讨论它们,在看了讲义和幻灯片之后,有点儿来找我。来自其他用户的评论,似乎你是对的! – supersix3