我对racket很陌生,我尝试编写一个函数来检查列表是否严格按升序排列。
'(1 2 3)将返回true
'(1 1 2)将返回false(重复)
'(3 2 4)将返回false
到目前为止,我的代码是:
Image of code

(define (ascending? 'list)
   (if (or (empty? list) (= (length 'list) 1)) true
      (if (> first (first (rest list))) false
          (ascending? (rest list)))))

我想叫升序递归地,我的基本情况是列表为空或只有一个元素(然后是轻微的升序)。
当我使用check expect时,总是收到一条错误消息,上面写着“application:not a procedure”

最佳答案

我想你想从头开始实施一个程序,亚历山大的答案是正确的但在真正的函数式编程风格中,您应该尝试重用现有的程序来编写解决方案。这就是我的意思:

(define (ascending? lst)
  (apply < lst))

它更短,更简单,更容易理解而且工作如期!
(ascending? '(1 2 3))
=> #t

(ascending? '(1 1 2))
=> #f

关于recursion - 检查 Racket 中列表的升序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43083101/

10-13 07:06