这段代码有问题:
问题是我不断收到警告 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)
您的solve
功能将不执行return
if语句a == 0 || b == 0
是不正确的的任何一个a >= 2 * b
或b >= 2 * a
都是如此。
看来,这两个solve(a, b);
在solve
功能应该是return solve(a, b);
。