1

我试图对 Karatsuba 算法进行一些更改。我不想将每个数字分成 2 个字符串,而是将其分成 3 个。

例如:

普通 Karatsuba -> 第一个数字将进入 A 和 B。第二个数字将进入 C 和 D。

       A B
     x C D
resulting...
    ac  ad+bc   bd

为了通过递归调用来实现它,大多数代码都执行以下操作:

e = karatsuba(a,c)
f = karatsuba(b,d)
g = karatsuba(a+b,c+d)
h = g-f-e //that's to get the 'ad+bc', since (a+b)(c+d) = ac+ad+bc+bd, then removing 'f' and 'e', we get just ad+bc

最后...

return e*10ˆn + h*10^(n/2) + f;

我要实现的 Karatsuba -> 第一个数字将进入 A、B 和 C。第二个数字将进入 D、E 和 F。

    A B C
  x D E F
resulting...
 ad  ae+bd  af+be+cd  cf+ce  cf

但是我不知道如何通过递归调用来实现这样的事情,因为它似乎比常见的方式复杂得多。

请帮忙。

4

0 回答 0