使用递归编写函数计算两个数据m和n的最大公约数
时间: 2024-05-11 09:19:20 浏览: 131
可以使用辗转相除法来求解两个数的最大公约数,而递归可以非常方便地实现这个算法。具体实现如下:
```python
def gcd(m, n):
if n == 0:
return m
else:
return gcd(n, m % n)
```
这个函数的基本思路是:如果n等于0,则m就是最大公约数;否则,递归地调用gcd函数,将n和m%n作为参数传入。这样,每次递归都会将较大的那个数不断地除以较小的那个数,直到其中一个数被除尽为止,此时剩下的那个数就是最大公约数。
使用这个函数,可以方便地计算任意两个数的最大公约数,例如:
```python
print(gcd(24, 36)) # 输出12
print(gcd(17, 23)) # 输出1
print(gcd(60, 48)) # 输出12
```
相关问题
使用python代码 编写函数计算两个数据m和n的最大公约数(不使用递归)
可以使用辗转相除法来计算两个数的最大公约数,可以使用以下代码实现:
```python
def gcd(m, n):
while n != 0:
r = m % n
m = n
n = r
return m
```
在这个函数中,我们使用一个 while 循环来进行辗转相除的操作,直到 n 为 0 为止。在每次循环中,我们计算出 m 除以 n 的余数 r,并将 n 赋值为原来的 r,m 赋值为原来的 n,这样就可以继续进行下一轮循环。当 n 为 0 时,最大公约数就是 m,我们将其返回即可。
使用递归编写函数计算两个数据m和n的最大公约数 1.对于已知两数m, n,使得m>n; 2.m除以n得余数r ; 3.若r=0,则n为最大公约数结束;否则执行步骤4 ; 4.m←n,n←r,再重复执行步骤2。
以下是使用递归编写函数计算两个数据m和n的最大公约数的代码:
```
int gcd(int m, int n) {
if (n == 0) {
return m;
}
return gcd(n, m % n);
}
```
在这个函数中,首先判断n是否为0,如果为0,则m为最大公约数,直接返回m。如果n不为0,则将m除以n的余数r赋值给n,并将原来的n赋值给m,再次调用gcd函数,继续递归,直到n为0为止。
阅读全文