【发布时间】:2012-10-22 15:36:34
【问题描述】:
我正在寻找一些关于家庭作业的快速提示。我们遇到了一些问题,并且必须编写两个快速程序来说明如何使用迭代和递归中的一个来解决这些问题。我敢肯定这比我想象的要容易,但是我很容易对这两者感到困惑。我不希望任何人为我完全解决问题,我不会学到任何东西!但是,如果你能看看我到目前为止所拥有的,让我知道我是否朝着正确的方向前进。此外,代码不需要编译,我们的教授希望我们对迭代与递归的区别有一个大致的了解。
问题:检查一个字符串是否为回文。
我的解决方案——我认为是迭代解决方案:
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" 是赋值而不是比较。另外,return 之后的代码根本不会执行。
-
是否要求您使用堆栈?你让这变得比它必须的更难。
-
不一定要使用堆栈,但是我们的教授已经花了很多时间来谈论它们,我只是在查看讲义和幻灯片后才想到这一点。从其他用户的说法来看,您似乎是对的!
标签: c++ algorithm recursion iteration