scheme - Scheme中用“and”和“or”编写程序
问题描述
我正在使用 DrRacket 学习 Scheme,并正在研究一个名为 ' sign
' 的过程,该过程接受一个参数,如果小于 0,则返回 -1,如果大于 0,则返回 1,如果 = 0,则返回 0。
我的代码如下
(define (sign x)
(and (> x 0) 1)
(and (= x 0) 0)
(and (< x 0) -1))
我只能使用 ' and
' 和 ' or
' 在我的任务中编写代码,这意味着我不能使用 ' if
' 和 ' cond
' 等。
我的代码在使用或其他任何东西#t
运行时返回。(sign 5)
解决方案
首先,该sign
过程已经存在并且您正在覆盖它,这是需要注意的。
所以你有这个要求,在你的实现中只使用and
, 。or
好吧,你只是错过了or
一部分:)
(define (sign x)
(or
(and (> x 0) 1)
(and (= x 0) 0)
(and (< x 0) -1)))
例如:
(sign -10) ; -1
(sign 100) ; 1
(sign 0) ; 0
推荐阅读
- java - 我一直在 android 的 SQLITE Database 上做一些编码,如何在 DatabaseHelper.java 中编写 Where 子句语句
- javascript - 如何允许用户只写 00 到 24 之间的数字
- node.js - 如何使用 axios post 请求上传文件
- groovy - 想要使用 groovy 脚本将文本文件从本地驱动器复制到服务器位置。获取缺少方法异常
- flutter - httpclient post 请求与 application/x-www-form-urlencoded 在颤振中
- sql - 将 CTE 中的 array_agg 与任何
- python - 在 Django Admin 中上传图像时丢失元数据
- cocoa - 带有文本选择的 NSAttributedString 的 NSTextField 的奇怪行为
- javascript - 一旦应用于 var,Math.random 返回相同的数字
- database - 无法保存 Magento 1 后端系统设置