当前位置: 首页 > news >正文

C语言| 递归求两个数的最大公约数

C语言| 函数的递归调用

【递归求两个数的最大公约数】
难点在于如何呈现出求解最大公约数
数学上求解两个数的最大公约数有多种方法,包括辗转相除法、相减法、穷举法等。

辗转相除法,也称为欧几里得算法,是求解最大公约数的经典方法。具体步骤如下:
1 取两个数中较大的数作为除数,较小的数作为被除数。
2 用较大的数除以较小的数,如果余数为0,则较小的数即为这两个数的最大公约数。
3 如果余数不为0,则用较小的数除以上一步计算出的余数,直到余数为0。此时,上一步的余数即为这两个数的最大公约数。

【分析过程】
自定义一个函数ZDGYS()求解最大公约数,主函数再直接调用它。

  [ZDGYS()函数]
  不断取余,直到余数为0.
  mod=m%n;m=n; n=mod;不断带进去计算,直到出现余数为0。
  举例 m=20, n=15
  mod=m%n=20%15=5; m=n=15; n=mod=5;
  mod=m%n=15%5=0; m=n=5; n=mod=0;
  所以最大公约数为5.

【程序代码】

#include <stdio.h>

int ZDGYS(int m, int n); //函数声明

int main(void)
{
    int m, n;
    
    printf("请输入m,n的值:");
    scanf("%d %d", &m, &n);

    printf("m=%d,n=%d,它们的最大公约数为%d\n", m, n, ZDGYS(m,n));

    return 0;
}

int ZDGYS(int m, int n)
{
    if(m%n == 0)
    {
        return n;
    }
    else
    {
        return ZDGYS(n, m%n);
    }
}

相关文章:

  • Consumer Group的作用是什么?Rebalance的触发条件有哪些? (实现消费者负载均衡;消费者加入/离开、订阅Topic变化等)
  • 【Java ee 初阶】多线程(8)
  • Ubuntu日志文件清空的三种方式
  • 嵌入式通信协议总览篇:万物互联的基石
  • 滚动条样式
  • Ubuntu 配置网络接口端点(静态 IP 地址)详细教程
  • 紫光同创FPGA实现HSSTHP光口视频传输+图像缩放,基于Aurora 8b/10b编解码架构,提供3套PDS工程源码和技术支持
  • 如何有效防御服务器DDoS攻击
  • Tiny Machine Learning在人类行为分析中的全面综述
  • spring4.x详解介绍
  • 力扣热题100之反转链表
  • vue3 element-plus 输入框回车跳转页面问题处理
  • 《Python星球日记》 第43天:机器学习概述与Scikit-learn入门
  • 协方差与皮尔逊相关系数:从定义到应用的全面解析
  • Coze平台 搭建「AI美食视频制作工作流」的详细实现方案
  • Java消息队列性能优化实践:从理论到实战
  • JVM的双亲委派模型
  • Spark 之 YarnCoarseGrainedExecutorBackend
  • Kubernetes学习笔记
  • Python训练营打卡——DAY18(2025.5.7)
  • “犍陀罗艺术与亚洲文明”在浙大对外展出
  • 中美经贸高层会谈在瑞士日内瓦开始举行
  • 习近平会见古巴国家主席迪亚斯-卡内尔
  • 夜读丨喜马拉雅山的背夫
  • 稳住外贸基本盘,这个中部大省出手了
  • 读图|展现城市品格,上海城市影像走进南美