【发布时间】:2015-11-18 21:13:10
【问题描述】:
所以我尝试为我刚开始学习 C++ 的朋友(我有一些 C++ 的基本知识)创建一个函数来查找 GCD(最大公约数)。所以这是我的代码:
int gcd(int var1, int var2){
int result;
if(var1<1 || var2<1){
return 0; //means error
} else {
for(int i=0; i<=var1 && i<=var2; i++){
if((var1%i) == 0 && (var2%i) == 0){
result = i;
}
}
}
return result;
}
它已编译,但问题是 .exe 在尝试使用运算符“%”时停止工作。在这种情况下,在这行代码中:var1%i 和 var2%i。所以,我试着把代码稍微调整一下:
int gcd(int var1, int var2){
int result;
if(var1<1 || var2<1){
result = 0; //means error
} else {
for(int i=var1; i>=1; i--){
if((var1%i) == 0 && (var2%i) == 0){
result = i;
break;
}
}
}
return result;
}
而且它没有任何问题。所以,我想知道第一个代码有什么问题?
【问题讨论】:
-
嗯,n % 0 看起来不像是可计算的东西,是吗?
-
在代码中,你从 int i = 0;然后使用 var mod 0。结果未定义,因为它是除以零错误。
-
@Mr.Llama 因为我删除了那部分,.exe 工作正常
-
@Lao 是的...我想知道为什么我没有发现那个错误
-
@ShyamalDesai 是的,感谢您的回复。我是愚蠢的没有意识到哈哈
标签: c++ function greatest-common-divisor