我认为Scheme有一个内置类型Bignum来处理任意大数字,但是如果我想自己实现它我该怎么做呢?
如果我没弄错,它有以下语法: | N |当n = 0时=() | N | =(r。| q |)其中n = qN + r,0 <= r
N = base
r = remainder
q = quotient
E.g。当基数N = 16时,| 33 | =(1 2)wher 1是余数,2是商。
PS:使用bignum实现我怎样才能转到下一个号码(后继号码)和前一个号码(前一个号码),例如successor |n| = |n+1|
和predecessor |n+1| = |n|
答案 0 :(得分:5)
你很幸运。这个问题很经典。 Andre van Meulebrock撰写了一系列关于bignums(表示和相关算法)的优秀文章。该文章包含可运行的Scheme代码,因此请尝试使用他的代码。
领导MacTech的档案:
http://www.mactech.com/articles/mactech/Vol.08/08.03/BigNums/index.html