【发布时间】:2013-06-22 22:37:16
【问题描述】:
我对方案很陌生,我想获取一个诸如 (1 2 3 4) 之类的列表并将其发送到将返回 (4 1 2 3) 的函数。第二次运行将返回 (3 4 1 2),依此类推,每次调用该函数时都会创建一个右移列表。
我想出解决这个问题的第一种方法是递归地交换列表的第一个和最后一个值。因此,在方案中,我会将列表的 car 附加到列表的 cdr 中,并将列表的 cdr 递归地发送回我的函数,直到只能进行最后一次交换。
但是,我不擅长创建递归函数,而且我在使用新语言(例如 scheme)时遇到了麻烦。这是我到目前为止所尝试的,以说明我想去哪里。
(define (rShift lst)
(if (null? lst)
'()
(append (cdr lst (car lst))(rShift (cdr lst)))))
【问题讨论】:
-
您没有测试代码。
(cdr lst (car lst))部分甚至无法编译。
标签: list recursion scheme shift