c++ - 引用变量赋值逻辑
问题描述
好的,所以我正在制作一个函数,通过计算最大公因数来减少有理数,然后在减少/简化后返回新的分子和分母。例如: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
解决方案
你正在改变num
和den
内部while
循环。该值不应更改。
请将num
和den
变量存储在其他变量中,并使用这些值进行如下操作。
void reduce(int &num, int &den){
int remainder = num % den;
int tempNum = num, tempDen = den;
while(remainder != 0){
tempNum = tempDen;
tempDen = remainder;
remainder = tempNum % tempDen;
cout << "gcf: " << remainder << endl;
break;
}
num = num / remainder;
den = den / remainder;
}
int main() {
int num =24;
int den = 60;
reduce(num,den);
cout << num << " " << den;
return 0;
}
推荐阅读
- asp.net-core - 使用 JavaScript 在第三列上进行 HTML 表格搜索
- javascript - 从 jsduck 迁移到 jsdoc
- html - 使用按钮内的 SVG 修复 HTML 按钮错位
- sql - Postgresql 外键操作 - 删除属性并更改与此相关的其他属性
- flutter - 当我在屏幕内从屏幕导航时,Flutter Navdrawer 消失
- r - 如何提取 \t 和 \ 之间的文本元素
- python-3.x - For循环遍历元组A并增加元组Ai给定大小N到可迭代的Ni
- python - 由于 SSL 证书错误,Windows 10 无法安装 Pip
- django-rest-framework - 使用 Django REST 框架和令牌身份验证的服务器端会话
- c++ - 具有非常量值的 c++ 数组索引