Karatsuba递归代码无法正常工作

时间:2019-06-27 10:58:43

标签: python-3.x recursion karatsuba

我想在python中实现Karatsuba乘法算法,但不能完全正常工作。

对于大于999的x或y值,代码不起作用。对于小于1000的输入,程序显示正确的结果。在基本情况下,也显示正确的结果。

self.tableView.reloadData()
self.refreshControl.endRefreshing()

我认为a,b,c和d的计算存在一些错误。

1 个答案:

答案 0 :(得分:0)

a = x//(10**o)
b = x-(a*10**o)
c = y//(10**p)
d = y-(c*10**p)

您的意思是10的力量,但用10乘以10。

您应该训练自己找出这类错误。有多种方法可以做到这一点:

  • 针对特定输入手动在纸上执行算法,然后逐步检查代码,看看是否匹配
  • 将代码缩减为子部分,查看其期望值是否与产生的值匹配。在您的情况下,请检查prod()的每次调用,以了解预期的输出是什么以及产生了什么,以找出产生错误结果的最小输入值。
  • 使用调试器逐步执行代码。在每一行之前,请先考虑结果应该是什么,然后查看该行是否产生该结果。