我找到了一个解决方法:
(define (sign x)
(if (positive? x)
1
(if (negative? x)
-1
0)))
刚刚在我的大学开设了一个Scheme课程。我们得到的一个练习是定义一个名为sign的过程,它将一个数字作为参数,如果数字为正则返回1,如果数字为负则返回-1,如果数字为0则返回0。
我们必须以两种方式做到这一点,第一种是使用cond,这是相当简单和可理解的,因为书中指出使用cond最适合检查多个表达式。第二种方式是使用if,我有点卡在这里,我不知道如何用if检查。我是这种语言的新手,所以如果这是一个糟糕的问题,我很抱歉。
答案 0 :(得分:2)
如果您有多个条件,而不是嵌套if
,那么使用cond
会更明智。但是如果您必须使用if
通知您可以嵌套它,请特别注意始终提供"否则"部分适应所有条件并适当地缩进它们:
(define (sign x)
(if (< x 0)
-1
(if (> x 0)
1
0)))
答案 1 :(得分:2)
使用cond
:
(define (sign x)
(cond ((< x 0) -1)
((> x 0) 1)
(else 0)))
答案 2 :(得分:1)
简单:嵌套if
表达式
(if x a (if y b c))
答案 3 :(得分:1)
为了添加其他答案,如果你正在处理整数......你可以这样做!
(define (sign x)
(if (= x 0)
0
(/ x (abs x))))
但/
和abs
可能比简单的if
贵,所以不管怎么说都不应该使用该解决方案。这只是一个提醒,有时候,你可以通过使用数学获得平等的结果。如果您确定没有任何0
,则可以在没有if
的情况下解决此问题。