警告 C4715:并非所有控制路径都返回值 c++ - 无法通过测试

-1 c++ recursion return

这段代码有问题:

问题是我不断收到警告 C4715,尽管 .exe 运行正常,并且它为我试图解决的问题提供了正确答案。警告使得无法在应用程序内传递任务。请给我一个线索,为什么我在 if 语句中使用的“返回”不起作用。

#include <utility>
#include <iostream>


    std::pair<int, int> solve(int a, int b) {
    
        if (a == 0 || b == 0) {
            std::pair <int, int> kek(a, b);
            return kek;
    
        }
        else if (a >= 2 * b) {
            a = (a - (2 * b));
            solve(a, b);
        }
        else if (b >= 2 * a) {
            b = (b - (2 * a));
            solve(a, b);
        }
        else {
            std::pair <int, int> kek(a, b);
            return kek;
        }
        
    }
    
    int main() {
        bool result{ solve(22, 5) == std::make_pair(0,1) };
        std::cout << result;
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

Mik*_*CAT 5

您的solve功能将不执行returnif语句a == 0 || b == 0是不正确的的任何一个a >= 2 * bb >= 2 * a都是如此。

看来,这两个solve(a, b);solve功能应该是return solve(a, b);