递归函数抛出非空函数结束警告

use*_*650 0 c++ recursion warnings

    Node * replaceValue(Node * x) const
    { 
        if (x == nullptr)
            return nullptr;
        if (x->left != nullptr)
            replaceValue(x->left);
        else
            return x;
    }
Run Code Online (Sandbox Code Playgroud)

警告:控制到达非空函数的末尾

我应该忽略这个吗?我确保这个函数总是返回一些东西(所有用 nullptr 初始化的指针),但我不希望这个警告继续弹出。如果我在函数末尾添加 return nullptr,那么它就会崩溃。有没有办法解决?

120*_*arm 5

切勿忽视警告。它正在告诉你一些重要的事情。

在这种情况下,当您递归调用replaceValue时,您将丢弃该调用的返回值,然后落入函数底部而不返回任何内容。

您可能想使用return replaceValue它。