Код: Выделить всё
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);
}
когда я компилирую этот код, возникает ошибка, говорящая, что непустая функция не возвращает значение во всех случаях. пути управления
если я добавлю 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
Мобильная версия