C++ 返回值与函数中计算的值不同
返回值应为7,并在gcd函数中正确计算。 所以我在第7行返回值 但在main函数中,当我打印出返回值时,它是3。 我不知道为什么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);
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()
函数应该执行以下操作