【发布时间】:2020-11-10 01:07:36
【问题描述】:
好的,所以我正在创建一个函数,通过计算最大公因数来减少有理数,然后在减少/简化后返回新的分子和分母。例如:24/60 到 2/5。
void reduce(int &num, int &den){
int remainder = num % den;
while(remainder!=0){
num = den;
den = remainder;
remainder = num % den;
cout << "gcf: " << remainder << endl;
break;
}
num = num / remainder;
den = den / remainder;
}
该函数应返回 num = 2 和 den = 5。但是,由于某种原因,它返回 num = 5 和 den = 2。
我的主要功能是这样的
int main() {
int num = 24;
int den = 60;
reduce(num, den);
cout << num << " " << den;
// Output:
// gcf: 12
// 5 2
【问题讨论】:
-
为什么不使用
std::gcd? -
循环中没有保护的
break语句会在循环中花费很短的时间。 -
@eerorika 我可以,但理论上我该怎么做(我做错了什么)
标签: c++ pass-by-reference