我在方案中实现了一个“big-int”作为列表,所以第一个元素是数字的符号(+或 - ),以下是数字本身的值,首先是那些,然后是十等等。
例如:(+ 0 0 1)
适用于100
,(- 9 2 3 1)
适用于-1329
等。
我现在需要的是以这种方式实现的big-int实现加法,减法和乘法。我做过加法和减法,有人可以帮助我进行乘法吗?
答案 0 :(得分:2)
将问题分解成更小的部分。首先,编写一个将Big-int乘以一个数字的函数。然后,将这个(使用Greg Hewgill的提示,你可能知道如何在纸上做到这一点)扩展到一个函数,该函数将Big-int乘以一个数字列表。最后,将它包装在一个函数中,该函数接受两个Big-ints,剥离符号,然后调用前一个函数。
我强烈建议您在开发这些函数之前编写测试用例。
答案 1 :(得分:0)
这是一个众所周知的分而治之的big-int乘法方法:
http://ozark.hendrix.edu/~burch/csbsju/cs/160/notes/31/1.html
这种方法将两个数字分成两半并递归处理它们。这是非常快的,并且很容易实现,尽管它可能看起来很长。我强烈推荐它。它在其他语言中占用了大约10行代码,在方案中可能更少:)。