利用递归函数的原理,设计一个求两个正整数的最大公约数的递归函数
时间: 2024-04-30 10:03:54 浏览: 152
可以使用欧几里得算法(辗转相除法)来求两个正整数的最大公约数,其原理是:设两个正整数为a和b(a>b),则a和b的最大公约数等于b和a%b的最大公约数。
下面是一个求最大公约数的递归函数:
```python
def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)
```
首先判断b是否为0,如果为0则直接返回a,否则递归调用函数gcd(b, a%b),直至b为0,返回a。
相关问题
利用递归函数原理,设计一个求两个正整数的最大公约数的递归函数,并调用该函数的
代码如下:
```python
def gcd(a, b):
"""
递归函数求最大公约数
"""
if b == 0:
return a
else:
return gcd(b, a % b)
# 调用函数
a = 24
b = 16
print("最大公约数为:", gcd(a, b))
```
输出结果为:
```
最大公约数为: 8
```
解释:24和16的最大公约数为8,因此该递归函数的输出结果是正确的。
利用递归函数原理,设计一个求两个正整数的最大公约数的递归函数,并调用该函数的验证结果
下面是求两个正整数的最大公约数的递归函数实现:
```python
def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)
```
函数的基本思路是利用求最大公约数的欧几里得算法(辗转相除法)。具体实现中,如果 b 为 0,则 a 就是最大公约数;否则,将 b 与 a 取模的结果作为新的 a,b 作为新的 b,继续递归求解。
下面是一个简单的测试:
```python
print(gcd(12, 18)) # 输出6
```
结果为 6,符合预期。
阅读全文