本帖最后由 highflybir 于 2014-10-15 12:32 编辑
LISP编程中有哪些限制,又有哪些取值范围呢?
我这儿列举了几个例子,希望能抛砖引玉。
1,整数的取值范围: 相当于 2^31, -2147483648 < n < 2147483648; 否则,整数就会变成实数。
2, 实数的取值范围: 相当于 2^1024,即: -1.79769313e+308 < x < 1.79769313e+308;否则就会显示:-1.#INF和1.#INF.
3, 堆栈的范围:主要是在递归上可以表达出来:
譬如用以下递归函数
![](source/plugin/imc_colorcode/images/loading.gif) - (defun f (n)
- ( if (= n 1)
- 1
- (+ n (f (1- n)))
- )
- )
测出结果是: 19975 --看来这个数值还是很低的,所以能不用递归,就不用递归。
否则超过嵌套限制就会出现:
internal stack limit reached (simulated)Hard error occurred ***
内部堆栈达到极限(模拟) ,硬件错误。
好了,我抛了三块砖,请大家继续添加。
|