在计划球拍中乘以Big-Ints

时间:2011-12-01 18:27:13

标签: list scheme racket digit

我在方案中实现了一个“big-int”作为列表,所以第一个元素是数字的符号(+或 - ),以下是数字本身的值,首先是那些,然后是十等等。

例如:(+ 0 0 1)适用于100(- 9 2 3 1)适用于-1329等。

我现在需要的是以这种方式实现的big-int实现加法,减法和乘法。我做过加法​​和减法,有人可以帮助我进行乘法吗?

2 个答案:

答案 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行代码,在方案中可能更少:)。