python - RecursionError:在 Karatsuba 乘法中超出了最大递归深度
问题描述
我正在实现 karatsuba 乘法。在我的作业中,我必须计算 2 个 64 位数字的乘法。
但是在实施它时,我遇到了错误-
RecursionError: maximum recursion depth exceeded while calling a Python object
所以我的问题是由于我的笔记本电脑限制导致的错误还是 karatsuba 不适用于如此大的数字?
我的代码是-
def karatsuba(num1,num2):
if (len(str(num1))==1 and len(str(num2))==1):
return num1*num2
else:
print(num1,num2)
a,b=int(str(num1)[:len(str(num1))//2]),int(str(num1)[len(str(num1))//2:])
c,d=int(str(num2)[:len(str(num2))//2]),int(str(num2)[len(str(num2))//2:])
#print(a,b,c,d)
res1=karatsuba(a,c)
res2=karatsuba(b,d)
res3=karatsuba(a+b,c+d)
res4=res3-res2-res1
#print(res1,res2,res4)
n=max(len(str(num1)),len(str(num2)))
#print(n)
final_result=math.pow(10,n)*res1+math.pow(10,n/2)*res4+res2
return final_result
编辑-该代码适用于小数字,但对于大数字它会给出错误-
ValueError: invalid literal for int() with base 10: ''
解决方案
推荐阅读
- java - Java swing 窗口在调整大小时损坏
- c# - 如何使用 Assert.Throws 断言异常的类型?(原问题)
- javascript - 第一次关闭,我不知道怎么了?
- python - 使用 Docker 在 Google App Engine Flex 上部署 Flask 应用程序
- sql-server - 从字符串转换日期和/或时间转换失败
- python - Python中的部分数据需要更改24:00到23:00的时间
- jenkins-pipeline - 在声明性 Jenkinsfile 中首先运行脚本以使用扩展选择参数插件
- sql - 使用来自不同表的 where 字段更新表
- powershell - 如何使用“Shift + Right Click”以其他用户身份启动 *.ps1 文件?
- html - 如果我没有看到客户出现的错误,如何对 html 电子邮件模板进行故障排除?