Итак, у меня есть простой цикл 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