【问题标题】:multiplying big numbers using recursion and array使用递归和数组将大数相乘
【发布时间】:2011-02-15 18:45:08
【问题描述】:

我应该编写一个使用递归(分而治之)来乘以两个数组的算法。这些数组包含大于 long(int 64)或双倍容量的大数字。 请帮忙用 C# 编写这个算法吗?

【问题讨论】:

  • 当然。你先走吧。到目前为止你有什么?
  • 我有一些不使用数组的方法。

标签: c# algorithm


【解决方案1】:

这是一个开始:将每个数字分成 2 部分,递归地相乘,然后将它们与正确的偏移量相加。

【讨论】:

  • 这个我知道,但是如何通过数组来实现?!我将我的大数字保存在两个数组中。
  • @Keith,你的意思是使用普通的数组乘法程序,但实际乘法使用分治法?
  • 将数组分成两半。使用以下公式进行 2k 位乘法: (A + B * 2^k) * (C + D * 2^k) = AC + (AD + BC) * 2^k + BD 2^(2k)。将第一个被乘数除以 A 和 B,将第二个被乘数除以 C 和 D。
猜你喜欢
  • 2018-07-16
  • 1970-01-01
  • 1970-01-01
  • 2022-07-28
  • 1970-01-01
  • 2017-11-18
  • 1970-01-01
  • 1970-01-01
  • 2020-02-15
相关资源
最近更新 更多