我需要创建一个列表,使得min始终位于列表的外部。
实施例
输入(1 2 3)
输出(1(2 3))
这是我的代码,假设数字按降序排列,我希望稍后将其扩展到一般情况。
我得到一个意外的输出(3 2 1 0 -1 -2 -3())。
我如何在计划中实现这一点?'
(定义(find-min-rest L) (if(null?(cdr L))(let((x(car L)))(cons x'(()))) (让*((ret-ans(find-min-rest(cdr L)))(cur-elem(car L))(mini(car ret-ans))(rem-list(cdr ret-ans))) (cond((> cur-elem mini)(cons cur-elem(cons mini rem-list)))))))
答案 0 :(得分:0)
代码
(define (find-min-rest L)
(if (null? (cdr L)) (let ( (x (car L))) (cons x '( ())))
(let* ((ret-ans (find-min-rest (cdr L))) (cur-elem (car L)) (mini (car ret-ans)) (rem-list (cdr ret-ans)))
(cond ((> cur-elem mini) (cons cur-elem (cons mini rem-list)))))))
答案 1 :(得分:0)
如果使用内置程序并将问题分成几部分,则会更简单。请注意,以下假设单个最小值,根据需要进行调整:
(define (find-min-rest L)
(let* ((the-min (apply min L))
(the-rest (remove the-min L)))
(list the-min the-rest)))
(find-min-rest '(1 2 3))
=> '(1 (2 3))