Итак, мой профессор хотел бы, чтобы мы разработали рекурсивные функции для связанного списка из этого класса addressBookType, который унаследован от 4 других классов.Программа в основном создает адресную книгу с именем, адресом, датой и отношением человека, каждый из которых имеет свои собственные классы.
Рекурсивные функции, которые она хочет выполнить, - это печать, добавление, удаление и последовательное выполнение.search.
Я сделал их все рекурсивными, за исключением функции последовательного поиска.
Вот оригинальная и рекурсивная версия:
bool addressBookType::seqSearch(extPersonType item) const
{
bool found = false;
ListNode *nodePtr; // pointer to traverse the list
nodePtr = head; // start the search at the first node
found = seqSearchRecursive(nodePtr, item); // call recursive function
if(found)
found = (nodePtr->value == item); // test for equality
return found;
}
bool addressBookType::seqSearchRecursive(ListNode *nPtr, extPersonType obj) const
{
if(nPtr == NULL) // return false if value not found
{
return false;
}
else if(nPtr->value == obj) // return true if object found
{
return true;
}
else
seqSearchRecursive(nPtr->next, obj); // call recursive funct with next value
}
Моя проблема в том, что я получаю ошибку вывода.Когда я удалил объект из списка и искал его, он вернул false
.Затем я искал объект в списке, и он вернул false
.Значит, что-то заставляет функцию всегда возвращаться в ложное состояние. У кого-нибудь есть предложения?