Scheme 仅按方案按降序排列数字

Scheme 仅按方案按降序排列数字,scheme,Scheme,我想写一个函数,它只保留降序数,去掉升序数 例如: (降序(653128)) 应该给我(6531) 谢谢。列表是将对象考虑到列表中的结果。或者一个空的列表 考虑什么?这是一个内置的操作 (define (plain-cons x xs) (cond ((null? xs) (list x)) (else (cons x xs)))) ; using the built-in 降序列表是将对象降到降序列表上的结果。或者一个空的列表 什么是下降?这是一种考虑,结果列表也在

我想写一个函数,它只保留降序数,去掉升序数

例如:
(降序(653128))
应该给我
(6531)


谢谢。

列表是将对象考虑到列表中的结果。或者一个空的列表

考虑什么?这是一个内置的操作

(define (plain-cons x xs)
  (cond
    ((null? xs) (list x))
    (else (cons x xs))))    ; using the built-in
降序列表是将对象降到降序列表上的结果。或者一个空的列表

什么是下降?这是一种考虑,结果列表也在下降:

; (descend-cons 3 '())      -> (list 3)
; (descend-cons 8 '(7 3))   -> (cons 8 '(7 3))
; (descend-cons 5 '(8 7 3)) -> (descend-cons 5 '(7 3))

(define (descend-cons x xs)
  (cond
    ((null? xs) (list x))
    (else
       (let ((a (car xs)))
         (cond
           ((>= x a)      ; { 8 '(7 3)) } -> '(8 7 3)
              .... )
           (else          ; { 5 '(8 7 3)) } -> { 5 '(7 3) }
             (.... x 
                   (cdr xs))))))))
有了这些,任务很容易。我们将编写函数
descending
,它将一个列表转换为一个降序列表,如下所示

; (descending '())           ->  '()
; (descending '(x y z ...))  ->  (descend-cons x (..... '(y z ...)))

(define (descending lst)
  (cond
    ((null? lst) lst)
    (else
      (let ((x (car lst))
            (xs (cdr lst)))
        (...... x
                (...... xs))))))
所期望的第二个参数是什么?它必须是一个降序列表


我们可以从列表
'(y z…
)中创建一个降序列表吗?我们的武器库中有什么功能可以为我们做到这一点?

什么是
notAsc
?您的意思是“降序”
?您确定正确调用了该函数吗?您的调用中是否有一个带撇号的输入错误?我将函数修改为下降尼斯解决方案,但是当只有两个术语且不需要至少一个
begin
时,为什么
cond
?在这里,我首先关注的是正确性。你知道我的程序有什么问题吗?@flower for(5 8 3)你的方法会产生(8 3),但正确答案是(5 3)。你能完成我答案中的代码吗?到时候你就会明白了。不要匆忙,慢慢读,确保你在继续下一步之前理解了每一点。如有需要,欢迎您要求澄清。