Почему возвращаемое значение этого кода не охватывает весь путь управления?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему возвращаемое значение этого кода не охватывает весь путь управления?

Сообщение Anonymous »

Код: Выделить всё

TreeNode* searchBST(TreeNode* root, int val) {
if(root==nullptr)return nullptr;
if(root->val==val)return root;
if(root->valright,val);
if(root->val>val)return searchBST(root->left,val);
}
root — это заданный BST, val — целевое значение для поиска.
когда я компилирую этот код, возникает ошибка, говорящая, что непустая функция не возвращает значение во всех случаях. пути управления
если я добавлю return nullptr;в конце кода, который он будет запускать.
проблема в том, как поток управления пойдет по пути без возвращаемое значение.
предположим, что root={4,2,7,1,3>
если val=2 или val =7, код даст правильный ответ
если val=8 , поток управления выглядит как 4->7->nullptr, и он вернет nullptr, что тоже верно.
поэтому я не понимаю, почему в каком-то пути управления нет возвращаемого значения.Я спросил GPT, а также сделал некоторые выводы на бумаге, в том числе целевое значение есть и не находится в BST.
Я думаю, поскольку я добавляю if(root==nullptr)return nullptr;< /code>в начале кода нет необходимости добавлять его в конце.
мне очень хочется знать, при каких обстоятельствах эта рекурсия перейдет по пути без возвращаемого значения

Подробнее здесь: https://stackoverflow.com/questions/786 ... ntrol-path
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»