当一个函数需要有返回值而没有返回值时,且使用的printf则有些编译器会将printf的返回值作为该函数的返回值。在一个自定义函数中有多个控制分支,那么每个控制分支都需要一个返回值。(除非在函数开头声明此函数不需要返回值)printf的返回值为printf函数输出字符的个数。
一,辗转相除法求最大公约数:
#include<stdio.h>
int Gcd(int a, int b);
int main()
{
int m, n, gcd;
scanf("%d,%d", &m, &n);
gcd = Gcd(m, n);
printf("%d", gcd);
return 0;
}
//用欧几里得算法即辗转相除法求最大公约数
int Gcd(int a, int b)
{
int ret,k;
if (a < b)
{
ret = a;
a = b;
b = ret;
}
do {
k = b;
b = a % b;
a = k;
} while (b!=0);
return a;
}
二,递归方法求最大公约(更相减损法)
(a>b)Gcd(a,b)=Gcd(a-b,b);
(a<b)Gcd(a,b)=Gcd(a,b-a);
(a=b)Gcd(a,b)=a|b;
代码如下:
//用递归方法求最大公约数
int Gcd(int a, int b)
{
int ret=0;
if (a == b)
{
return a;
}
else
{
if (a < b)
{
ret = b;
b = a;
a = ret;
return Gcd(a - b, b);
}
else
{
return Gcd(a - b, b);
}
}
}