【发布时间】:2016-12-24 16:19:46
【问题描述】:
编程的人们,你好,
数字向后存储在尽可能小的整数数组中:
int[] numberA = {7, 3, 6, 2, 1}; //representing number 12,637
int[] numberB = {7, 3, 3}; //representing number 337
现在我想编写一个函数来返回这两个数字的乘积:
static int[ ] times(int[ ]a, int[ ] b) {
//numberA x numberB = product
return product;
}
因为 12,637 x 337 = 4,258,669,所以返回的数组应该如下所示:
product = {9, 6, 6, 8, 5, 2, 4};
所有这些都应该在不使用 Java API 的帮助下工作(例如java.util.ArrayList)。
我已经在同一个脚本中创建了可以使用的类似函数:
- 添加两个数字(数组)(
int[] add(int[] int[])) - 乘以一位整数 (
int[] timesInt(int[], int)) - 复制一个数组 (
int[] copy(int[])) - 从 int (
int[] fromInt(int)) 创建数字(数组)
谢谢
【问题讨论】:
-
到目前为止,您尝试过什么(代码方面,您自己)?这读起来像家庭作业
-
您可以尝试提取
int值,即。12637使用循环从数组中获取。这是你想要的吗? -
@Rogue 实际上我试图修改“add”函数以适应乘法,但我未能生成具有动态长度的数组。我还尝试通过滑入零来总结最终乘积来模仿用笔/纸(如小学)乘以数字的步骤
-
@TheRedRabbit - 假设字符串中没有尾随零,则乘积的长度将为 A.length + B.length - 1。在乘法运算期间将零插入字符串前面的方法并且使用您的添加功能应该可以工作。在查看 Karatsuba 之类的优化之前,您可能应该先完成这项工作。