0
点赞
收藏
分享

微信扫一扫

函数例题小点

快乐码农Alan007 2022-04-21 阅读 77
c语言

当一个函数需要有返回值而没有返回值时,且使用的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);
			 }
		}
	}
举报

相关推荐

0 条评论