我对方案很陌生,我想获取一个诸如 (1 2 3 4) 之类的列表并将其发送到将返回 (4 1 2 3) 的函数。第二次运行将返回 (3 4 1 2),依此类推,每次调用该函数时都会创建一个右移列表。
我想出解决这个问题的第一种方法是递归地交换列表的第一个和最后一个值。因此,在方案中,我会将列表的 car 附加到列表的 cdr 并递归地将列表的 cdr 发送回我的函数,直到只能进行最后一次交换。
但是,我不擅长创建递归函数,而且我在使用新语言(例如方案)时遇到了麻烦。到目前为止,这就是我试图给出的关于我想去哪里的想法。
(define (rShift lst)
(if (null? lst)
'()
(append (cdr lst (car lst))(rShift (cdr lst)))))