使用递归在C中找到最大的共同除数
这是我的代码,当输入为 21,15 时,我得到的输出为 0 。我期望的是 3 。函数的返回值 difisor 似乎返回错误的值。
#include<stdio.h>
int divisor(int a, int b){
//when b is 0, got the GCD
if(b==0){
printf("when b is 0, a=%d\n", a);
return a;
}
else{
//recursion
printf("the input a=%d,b=%d\n", b, a%b);
divisor(b, a%b);
}
// return res;
}
int main(void){
int a, b;
scanf("%d,%d", &a, &b);
int r = divisor(a, b);
printf("%d", r);
return 0;
}
here is my code, when the input is 21,15 I got the output is 0. what I expected is 3. the return value of the function divisor seems return a wrong value.
#include<stdio.h>
int divisor(int a, int b){
//when b is 0, got the GCD
if(b==0){
printf("when b is 0, a=%d\n", a);
return a;
}
else{
//recursion
printf("the input a=%d,b=%d\n", b, a%b);
divisor(b, a%b);
}
// return res;
}
int main(void){
int a, b;
scanf("%d,%d", &a, &b);
int r = divisor(a, b);
printf("%d", r);
return 0;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以尝试一下,但它只适用于积极的整数。
You can try this, but it will only work for positive integers.