返回值与函数中计算出的值不同

时间:2019-11-04 18:25:58

标签: c++ return

返回值应为7,并已在gcd函数中正确计算得出。 因此,我在第7行中返回了值。

但是在主函数中,当我打印出返回值时,它是3。 我不知道为什么。

index

1 个答案:

答案 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。请了解如何启用此类警告。)