刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

37.辗转相除法求最大公约数,下列函数是用递归算法实现的,请完善横线处的代码。
def gcd(a,b):
m=a%b
if m==0:
return   ①
else:
a=b

return ③
print(gcd(12,18))

使用微信搜索喵呜刷题,轻松应对考试!

答案:

解析:

【喵呜刷题小喵解析】:辗转相除法(又称欧几里得算法)是一种求两个正整数最大公约数的方法。它的基本思想是:用较大的数除以较小的数,再用出现的余数去除较小的数,如此反复,直到余数为零为止,此时较小的数即为两数的最大公约数。在给出的代码中,函数`gcd(a, b)`首先计算`a`除以`b`的余数`m`。如果`m`为0,说明`b`是`a`的倍数,所以`b`就是`a`和`b`的最大公约数,直接返回`b`。如果`m`不为0,说明`a`和`b`不是倍数关系,那么将`b`赋值给`a`,将`m`赋值给`b`,然后递归调用`gcd(a, b)`,直到余数为0为止。根据以上分析,我们可以完善代码中的横线处:1. ①处应返回`b`,表示当余数为0时,`b`即为最大公约数。2. ②处应将`b`赋值给`a`,`m`赋值给`b`,表示进入下一次递归。3. ③处应返回`gcd(a, b)`,表示递归调用`gcd`函数。
创作类型:
原创

本文链接:37.辗转相除法求最大公约数,下列函数是用递归算法实现的,请完善横线处的代码。def gcd(a,b

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share