|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
小甲鱼给的是欧几里得算法,
但是我用的是辗转相减法,请大佬帮我看看有没问题
- def fun1(a,b):
- if a == b:
- return a
- else:
- if a > b:
- return fun1(a-b,b)
- else:
- return fun1(a,b-a)
- print(fun1(5, 10))
复制代码
嘿嘿
有两个问题
1.运算时间非常的长
2.在运算数值较大时会超出了最大递归深度
- >>> def fun1(a,b):
- if a == b:
- return a
- else:
- if a > b:
- return fun1(a-b,b)
- else:
- return fun1(a,b-a)
-
- >>> fun1(9999,3)
- Traceback (most recent call last):
- File "<pyshell#27>", line 1, in <module>
- fun1(9999,3)
- File "<pyshell#26>", line 6, in fun1
- return fun1(a-b,b)
- File "<pyshell#26>", line 6, in fun1
- return fun1(a-b,b)
- File "<pyshell#26>", line 6, in fun1
- return fun1(a-b,b)
- [Previous line repeated 1021 more times]
- File "<pyshell#26>", line 2, in fun1
- if a == b:
- RecursionError: maximum recursion depth exceeded in comparison
复制代码
|
|