0

卡拉丘巴算法:https ://en.wikipedia.org/wiki/Karatsuba_algorithm

threshold = 4


def prod2(a, b):
    n = max(len(str(a)), len(str(b)))
    if a == 0 or b == 0:
        return
    elif n <= threshold:
        return a*b

    else:
        m = n/2
        x = a/pow(10, m)
        y = a % pow(10, m)
        w = b/pow(10, m)
        z = b % pow(10, m)
        r = prod2(x+y, w+x)
        p = prod2(x, w)
        q = prod2(y, z)
        return p*pow(10, 2*m) + (r-p-q)*pow(10, m)+q


a = 12314124
b = 123123
print(prod2(a, b))

RecursionError: 获取对象的 str 时超出了最大递归深度

我已经在Python中实现了Karachuba算法并根据输入值适当地返回它,但我不知道为什么会出现递归错误。

4

0 回答 0