Recursion 创建列表,使最小值在scheme中递归地与列表分离?
我需要创建一个列表,使min在列表中始终位于外部 范例 输入(1 2 3) 产出(1(2)(3)) 这是我的代码,假设数字是按降序排列的,我希望稍后扩展到一般情况 我得到了一个意外的输出(3 2 1 0-1-2-3()) 我如何在任何想法中实现这一点?” (定义(查找最小静止L) (如果(空)(cdr L))(let((x(car L)))(cons x'(())) let*((ret ans(查找最小休息(cdr L)))(cur elem(car L))(mini(car ret ans))(rem列表(cdr ret ans))) (cond((>cur elem mini)(cons cur elem(cons mini rem list‘‘‘‘‘‘‘‘)’)代码Recursion 创建列表,使最小值在scheme中递归地与列表分离?,recursion,scheme,Recursion,Scheme,我需要创建一个列表,使min在列表中始终位于外部 范例 输入(1 2 3) 产出(1(2)(3)) 这是我的代码,假设数字是按降序排列的,我希望稍后扩展到一般情况 我得到了一个意外的输出(3 2 1 0-1-2-3()) 我如何在任何想法中实现这一点?” (定义(查找最小静止L) (如果(空)(cdr L))(let((x(car L)))(cons x'(())) let*((ret ans(查找最小休息(cdr L)))(cur elem(car L))(mini(car ret ans))
(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)))))))
代码
(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)))))))
如果您使用内置的过程,并将问题分解为多个部分,则会更简单。请注意,以下假设存在一个最小值,请根据需要进行调整:
(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))
如果您使用内置的过程,并将问题分解为多个部分,则会更简单。请注意,以下假设存在一个最小值,请根据需要进行调整:
(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))
请张贴您迄今为止所写的代码,指出您遇到问题的确切部分代码是(定义(查找最小休息L)(如果(空)(cdr L))(let((x(car L)))(cons x'(()))(let*((ret ans)(查找最小休息(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()(()))(cons mini-rem list)())(cons x())(cons mini-rem list)()()))()((((((((40(cond((>cur-elem mini)(cons-cur-elem(cons-mini-rem-list()())())))