Skip to content

Instantly share code, notes, and snippets.

@novnan
Last active January 1, 2016 14:59
Show Gist options
  • Save novnan/8161745 to your computer and use it in GitHub Desktop.
Save novnan/8161745 to your computer and use it in GitHub Desktop.
/* 求两个整数的最大公约数的算法;
对于两个整数integer1和integer2, 算法如下:
1 如果integer1/integer2的余数为0,那么integer2就是最大公约数
2 如果余数不为0,那么将integer2赋值给integer1,余数赋值给integer2
3 从步骤1重复执行
编程一个程序来实现这个算法,它使用两个整型参数,并返回最大公约数。 */
#include <stdio.h>
int maxcom(int a, int b);
void main ()
{
// 这里声明的integer1和integer2仅在main函数里有效
int integer1;
int integer2;
printf("请输入两个整数:");
scanf("%d%d", &integer1, &integer2);
int t = maxcom(integer1, integer2);
printf("%d\n", t);
}
int maxcom(int a, int b)
{
// 这里应该使用a和b来代替
// 或者声明一个局部变量integer1 = a; integer2 = b;
int integer1 = a; //为什么要声明
int integer2 = b;
int t = integer1 % integer2;
if(t == 0) {
return integer2;
} else {
integer1 = integer2;
integer2 = t; // 不用return ?
// 肯定要return 一个值
// 根据算法,这里必需重复计算(递归调用maxcom)
return maxcom(integer1, integer2);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment