GCD 算法不正确
Incorrect GCD algorithm
>我的代码中还有其他所有正确内容,除了我的do-while循环的计算每次都归零。我不知道为什么会这样。这是代码的函数:(我必须使用do while循环)
编辑:即使添加括号,它仍然变为 0。 我使用的示例输入是 200 和 45。 答案应该是5正确吗?
int calculate_GCD(int value1, int value2){
int big;
int small;
int r; //remainder
int GCD;
if(value1>value2){
big = value1;
small = value2;
}
else{
big = value2;
small = value1;
}
do{
r = big % small;
if(r == 0)
GCD = small;
else{
big = small;
small = r;
}
}
while(r != 0);
return(GCD);
}
任何帮助都非常感谢。
你需要在
else 后面加上括号。
else
{
big = value2;
small = value1;
}
你忘了用大括号括起来两个语句
else
big = value2;
small = value1;
应有
else
{
big = value2;
small = value1;
}
此代码不会执行您认为它执行的操作:
else
big = value2;
small = value1;
这是它的实际作用:
else
big = value2; // Sometimes do this
small = value1; // ALWAYS do this
以下是您想要的:
else
{
big = value2;
small = value1;
}
你永远不会改变大小的值 - 它们通过计算的 mod 值来控制 r 的值。
因此,如果"r"第一次不为零,即当do第一次执行时,你的循环将永远持续下去。
相关文章:
- 使用2个键的cpp-stl::优先级队列排序不正确
- 正弦级数方程计算不正确
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 密码登录程序将永远循环并显示不正确的结果
- 在C++中返回不正确的楼层函数值
- 形状对象的旋转和缩放不正确C++
- C++ 读取文件读取文件不正确
- 关于类的 Python 文档 - 对C++的引用不正确
- 特征 LLT 模块给出不正确的结果?
- glibcxx STL 在实现 std::valarray::sum() 时是否不正确?
- 对于代码中指定的边界之外的值,对角差算法的输入不正确
- Dijkstra算法条件不正确
- GCD 算法不正确
- 阵列调试不正确的输出,复杂算法
- C++循环算法不正确(或文件处理问题)
- 二进制搜索树最佳拟合算法:输出不正确
- Dijkstra算法输出不正确
- 计时排序算法的效率,但得到不正确的输出
- STL计数算法返回不正确的值
- Dijkstra 算法返回不正确的值