1-12-3 - 递归法求最大公约数(贺老点拨版)

本文深入探讨并解析使用递归方法求解两个整数最大公约数的算法,通过具体代码实例,解释如何利用递归条件b==0来结束递归过程,并在实践操作中领悟算法背后的逻辑和优化思路。

问题及代码:

/*
* Copyright (c) 2014, 烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:main.cpp
* 作    者:何小乐
* 完成日期:2014年 11 月 17 日
* 版 本 号:v1.0
*
* 问题描述:用递归求出两个数的最大公约数
* 输入描述:两个整型数
* 程序输出:这两个数的最大公约数
*/
#include <iostream>
using namespace std;
int gcd(int,int);
int main()
{
    int x,y;
    cin>>x>>y;
    cout<<gcd(x,y)<<endl;
    return 0;
}
int gcd(int a,int b)
{
    if(b==0)  //0和其他数的公约数是其他数
        return a;
    else
        gcd(b,a%b);  
}


 

运行结果:

学习小结:

做这个项目时,我写了一个很像以前项目求最大公约数的算法,只是在gcd函数内调用了gcd函数,我怀疑它是否算递归,遂询问了贺老,指点一番后,有所知亦有所不知。

知:可以把程序读懂

不知:我想不到可以用b==0作为递归的结束条件,而不需要中间变量

待我有空慢慢品味这个算法。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值