先除后加
我有一个变量a,我想除以2,然后加一。我可以除法和加法,但我不知道如何除法和加法,我需要另一个变量吗? Lisp是一种非常干净的语言,除了基础代数。。。加法、减法、乘法和除法都在一个类似的概念上工作:它们都是函数,必须这样对待。
所以,如果你想把一个数字“N”除以2,然后加一,你需要把它分解,并使用适当的函数。
(setq result (/ N 2))
将您的数字除以2。
(+ result 1)
将在结果上加一。所以你可以看到,如果你简单地用函数替换变量,你会得到:
在做了很多数学的人(或者仅仅是我的人)眼中,这是非常非常混乱的,但LISP就是这样做的。
我希望我的闲聊能有所帮助。^ 他们帮了很多忙,谢谢你的解释,而不仅仅是答案! 切尔西,另一件事-小心分裂。。。我的意思不仅仅是不提供零分母。。。
Divide对INT和实数参数(整数和实数)之间的差异非常敏感。
因此:
(/ 1 2) ---> Returns 0
(/ 1 2.0) ---> Returns 0.5
(/ 1.0 2.0) ---> Returns 0.5
(/ 1. 2) ---> Returns 0.5
因此,如果您提供两个INT作为参数,它将返回一个INT。 不客气,你总是乐于助人^^
更进一步说,LISP这样做是有原因的。由于它是一个函数,可以接受许多输入,因此如果要将许多数字相加,LISP比其他数字高得多,id est:
(setq var (+ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 .... ))
compared to
set var = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 ...
但是,当涉及到需要许多不同运算的复杂方程时,正如李-麦克签名所说的那样,你会迷失在多余的括号中。当你试图通过粘性流体追踪抛射粒子时,这尤其困难…>。>
赞成和反对,双刃剑,所有这些。即使代数有点扭曲,LISP仍然很好3. 很好的一个FreeRefill,不是想打败你,而是用LISP,如果你想快速地对一系列数字求和,因为“+”只是库存中的另一个函数,你可以将其与apply一起使用:
(setq lst '(1 2 3))
(apply '+ lst)---> Returns: 6
我让用户输入一个管道尺寸,它将作为一个整数输入,以弥补当我除以2时,我真的应该除以2.0来考虑这一点,所以如果它是一个9英寸的管道,它将输出4.5而不是4
(/ A 2.0); where A is an int
而不是
10 准确地说-始终了解您使用的数据类型
页:
[1]