试图在方案/球拍中旋转一个列表。例如: (rotate-left '(abc)) 输出 (bca)
这是ze代码!
(define (rotate-left LIST)
(if(null? LIST)'()
(cons(car LIST)(cons(cdr LIST)'())))))
不幸的是,这只是输出相同的列表!我敢肯定,这应该是一个简单的解决方法,而且我知道我已经接近了……感谢您的帮助!
@laser_wizard 给出的答案不起作用......这是一个正确的实现 - 您必须将第一个替换cons
为用于在列表末尾append
添加第一个元素。
(define (rotate-left LIST)
(if (null? LIST)
'()
(append (cdr LIST)
(cons (car LIST)
'()))))
(rotate-left '(a b c))
> '(b c a)
测试用例!测试用例!此处的检查期望将帮助您了解问题,并帮助其他人了解您在寻找什么。
我觉得我变老了。
你有车和 cdr 倒退了!干得好 :
(define (rotate-left LIST)
(if(null? LIST)'()
(cons(cdr LIST)(cons(car LIST)'())))))