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

C++ 返回值与函数中计算的值不同,c++,return,C++,Return,返回值应为7,并在gcd函数中正确计算。 所以我在第7行返回值 但在main函数中,当我打印出返回值时,它是3。 我不知道为什么 int gcd(int p, int q) { if(p<q){gcd(q,p);} if(q==0) { cout<<"p: "<<p<<endl; //This prints out 7 return p; } else gcd(q,p%q);

返回值应为7,并在gcd函数中正确计算。 所以我在第7行返回值

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

int gcd(int p, int q) 

 {

    if(p<q){gcd(q,p);}
    if(q==0)
    {
        cout<<"p: "<<p<<endl; //This prints out 7
        return p;
    }
    else gcd(q,p%q);
}
int main()
{
    int n;
    int count=0;
    cin>>n;
    while(n--)
    {
    count++;
    cout<<"Pair #"<<count<<": ";
    string input,input2;
    cin>>input>>input2;
    int sum1=0,sum2=0;
    int g;      
    for(int i=0;i<input.size();i++)
    {
        if(input[i]-'0'==1)
            sum1+=pow(2,input.size()-1-i);
    }
    for(int i=0;i<input2.size();i++)
    {
        if(input2[i]-'0'==1)
            sum2+=pow(2,input2.size()-1-i);
    }
    cout<<sum1<<" "<<sum2<<endl;
    g = gcd(sum1,sum2);
    cout<<"g: "<<g<<endl; //but this print out 3

  }
}
intgcd(intp,intq)
{

if(p递归函数的工作方式与非递归函数完全相同,包括调用函数不会自动立即返回该函数调用的结果

您需要在每个执行路径上返回一个值,否则代码将具有未定义的行为

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);
}
intgcd(intp,intq)
{
if(p您是否忘记了第11行的
返回值
尽管这里发布的所有其他内容都是
C
兼容的,
cout
cin
是唯一的
C++
“对于
input1
input2
的值,返回值应该是7”?另外,请解释
gcd()
函数应该执行以下操作