使用 if in scheme 来检查多个结果
Using if in scheme to check multiple consequences
我找到了解决方法:
(define (sign x)
(if (positive? x)
1
(if (negative? x)
-1
0)))
刚刚在我的大学开始了一个计划 class。我们得到的其中一个练习是定义一个名为 sign 的过程,它以一个数字作为参数,并且 returns 如果数字为正数则为 1,如果数字为负数则为 -1,如果数字为 0 则为 0。
我们必须通过两种方式来做到这一点,第一种是使用 cond,这是相当简单易懂的,因为书中说使用 cond 最适合检查多个表达式。第二种方法是使用 if,我有点卡在这里,我不确定如何使用 if 来检查它。我是这种语言的新手,如果这是一个不好的问题,我很抱歉。
简单:嵌套 if
表达式
(if x a (if y b c))
如果您有多个条件,与其嵌套 if
,不如使用 cond
. But if you have to use if
更明智,注意您可以嵌套它,请特别注意始终提供 "else" 部分到所有条件并正确缩进它们:
(define (sign x)
(if (< x 0)
-1
(if (> x 0)
1
0)))
使用cond
:
(define (sign x)
(cond ((< x 0) -1)
((> x 0) 1)
(else 0)))
为了添加其他答案,如果您正在处理整数...您可以这样做!
(define (sign x)
(if (= x 0)
0
(/ x (abs x))))
但是 /
和 abs
可能比简单的 if
更昂贵,所以您无论如何都不应该使用该解决方案。这只是提醒,有时候,您可以通过使用数学得到等效的结果。如果你确定没有任何 0
,你可以在没有 if
.
的情况下解决这个问题
我找到了解决方法:
(define (sign x)
(if (positive? x)
1
(if (negative? x)
-1
0)))
刚刚在我的大学开始了一个计划 class。我们得到的其中一个练习是定义一个名为 sign 的过程,它以一个数字作为参数,并且 returns 如果数字为正数则为 1,如果数字为负数则为 -1,如果数字为 0 则为 0。
我们必须通过两种方式来做到这一点,第一种是使用 cond,这是相当简单易懂的,因为书中说使用 cond 最适合检查多个表达式。第二种方法是使用 if,我有点卡在这里,我不确定如何使用 if 来检查它。我是这种语言的新手,如果这是一个不好的问题,我很抱歉。
简单:嵌套 if
表达式
(if x a (if y b c))
如果您有多个条件,与其嵌套 if
,不如使用 cond
. But if you have to use if
更明智,注意您可以嵌套它,请特别注意始终提供 "else" 部分到所有条件并正确缩进它们:
(define (sign x)
(if (< x 0)
-1
(if (> x 0)
1
0)))
使用cond
:
(define (sign x)
(cond ((< x 0) -1)
((> x 0) 1)
(else 0)))
为了添加其他答案,如果您正在处理整数...您可以这样做!
(define (sign x)
(if (= x 0)
0
(/ x (abs x))))
但是 /
和 abs
可能比简单的 if
更昂贵,所以您无论如何都不应该使用该解决方案。这只是提醒,有时候,您可以通过使用数学得到等效的结果。如果你确定没有任何 0
,你可以在没有 if
.