用python尝试编写一个递归函数mygcd实现辗转相除的算法,并作相关测试
时间: 2024-05-04 07:17:25 浏览: 109
Python辗转相除法
5星 · 资源好评率100%
好的,我可以回答您的问题。以下是递归函数mygcd的Python实现:
```python
def mygcd(a, b):
if b == 0:
return a
else:
return mygcd(b, a % b)
```
该函数使用辗转相除的算法来计算两个数的最大公约数。当其中一个数为0时,返回另一个非0数作为最大公约数。否则,将两个数的余数作为新的参数递归调用函数,直到其中一个数为0。
以下是测试函数的实现:
```python
def test_mygcd():
assert mygcd(60, 48) == 12
assert mygcd(354, 78) == 6
assert mygcd(17, 23) == 1
assert mygcd(0, 5) == 5
assert mygcd(28, 0) == 28
assert mygcd(0, 0) == 0
print("所有测试通过!")
test_mygcd()
```
该函数调用mygcd函数计算多对数的最大公约数,并使用assert语句比较结果与预期值是否相同。如果所有测试都成功,则输出“All tests passed!”。
阅读全文