【发布时间】:2019-03-09 06:42:30
【问题描述】:
所以我在类成员函数中有一个简单的 for 循环,它打印大学想要录取的学生的姓名。 StudentPreferenceList 和 SchoolName 是类成员变量,而 ostr 是我要写入输出的文件。
void School::printSchoolPreferences(std::ostream &ostr) const{
std::list<std::string>::const_iterator name;
ostr << SchoolName + " preference list:"<< std::endl;
int rank = 1;
for (name = SchoolPreferenceList.begin(); name !=
SchoolPreferenceList.end(); name++){
ostr << " " << rank << ". " << *name << std::endl;
rank++;
}
}
我现在正在尝试将此函数转换为递归函数,这就是我目前所拥有的。我目前在下面的尝试遇到了很多编译错误,如果您能帮我弄清楚如何解决它,我将不胜感激。谢谢。
void School::func(int rank, std::list<std::string>::const_iterator
name_rank, std::ostream &ostr){
if (rank < SchoolPreferenceList.size()){
ostr << " " << rank << ". " << *name_rank << std::endl;
func(rank++, name_rank++, ostr);
}
}
void School::printSchoolPreferences(std::ostream &ostr) const{
std::list<std::string>::const_iterator name;
ostr << SchoolName + " preference list:"<< std::endl;
int rank = 1;
func(rank, name_rank, ostr);
}
这是预期的输出:
university_of_michigan preference list:
1. erin_jones
2. john_smith
3. joe_miller
4. dave_roberts
【问题讨论】:
-
你没有初始化
name_rank(并且在你使用name时有错字)。 -
“得到很多编译错误”。所以提供一些。
-
只是好奇,为什么要将非递归代码转换为递归代码?
-
@aschepler 额外积分
标签: c++ list recursion stl listiterator