0
所以我试着做一个函数来找到一个刚刚开始学习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看起来不像是可计算的东西,是吗? – Lao
在代码中,你从int i = 0开始;然后使用var mod 0.结果是未定义的,因为它是零除错误。 –
@ Mr.Llama因为我擦除的一部分,该.exe作品就好 – YorS