返回值应为7,并已在gcd函数中正确计算得出。 因此,我在第7行中返回了值。
但是在主函数中,当我打印出返回值时,它是3。 我不知道为什么。
index
答案 0 :(得分:1)
递归函数的工作原理与非递归函数完全相同,包括如何自动自动调用函数并立即返回该函数调用的结果。
您需要在每个执行路径上返回一个值,否则您的代码将具有未定义的行为;
int gcd(int p, int q)
{
if (p < q)
{
return gcd(q, p);
}
if (q == 0)
{
cout << "p: " << p << endl;
return p;
}
else
return gcd(q, p % q);
}
(一个不错的编译器应该能够向您警告那些缺少的return
。请了解如何启用此类警告。)