我沒有得到任何結果,我的程式陷入了無限回圈。 我為四個具有相同邏輯的值制作了一個程式,效果很好,但是三個值不起作用
def Karatsuba_Recursive(a, b):
if not a or not b:
return "0"
if len(a) == 1 or len(b) == 1:
return str(int(a)*int(b))
else:
m = max(len(a),len(b))
m2 = m // 2
A = a[0:-m2]
B = a[-m2:len(a)].lstrip("0")
C = b[0:-m2]
D = b[-m2:len(b)].lstrip("0")
val1 = int(Karatsuba_Recursive(A,C))
val2 = int(Karatsuba_Recursive(B,D))
val3 = int(Karatsuba_Recursive((str(A B)),str((C D))))
return str((val1 * (10 **(2*m2))) ((val3 - val1 - val2) * (10**(m2))) val2)
uj5u.com熱心網友回復:
主要問題是A B字串連接,而不是數字加法。這應該是int(A) int(B)。對C D.
不幸的是,您選擇m成為max(len(a),len(b)),因為這使得有必要進行第一次if not a or not b測驗,并且您還需要調整上述修復以使用空字串。
你可以通過取而代之來避免所有min(len(a),len(b))這些m。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/510103.html
標籤:Python算法递归乘法
上一篇:排序到子字典?
