Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 如何更改racket中列表内容的顺序?_List_Racket - Fatal编程技术网

List 如何更改racket中列表内容的顺序?

List 如何更改racket中列表内容的顺序?,list,racket,List,Racket,我是一名球拍初学者,正在学习列表是如何工作的。我必须创建一个函数,该函数接受一个count变量和一个list,并生成相同的list,但第一个元素循环到list末尾“count”次数。我的代码适用于偶数列表,如调用函数2'(1 2 3 4),这将导致列表'(3 4 1 2),但不适用于奇数列表,如调用2'(1 2 3),这将导致'(3 1 2) 我错过了什么 您应该是右转-ing(length aList)-count元素,而不是count此问题的递归解决方案应使用基本情况,即count为零时:在

我是一名球拍初学者,正在学习列表是如何工作的。我必须创建一个函数,该函数接受一个count变量和一个list,并生成相同的list,但第一个元素循环到list末尾“count”次数。我的代码适用于偶数列表,如调用函数2'(1 2 3 4),这将导致列表'(3 4 1 2),但不适用于奇数列表,如调用2'(1 2 3),这将导致'(3 1 2)


我错过了什么

您应该是
右转
-ing
(length aList)-count
元素,而不是
count
此问题的递归解决方案应使用基本情况,即
count
为零时:在这种情况下,不需要进行旋转,输入列表应按原样返回

否则,应执行一次旋转,并减少
计数

使用递归的思想是将问题分解为子问题。必须至少有一个基本情况导致立即返回某个结果,并且必须有一个递归步骤来减少问题。在这种情况下,将减少
计数
,直到达到基本情况。在每个递归步骤中,列表的第一个元素被追加到列表其余部分的末尾,并且计数减少1,直到达到基本情况。当到达这里的基本情况时,除了返回结果外,无需执行任何操作

还请注意,当
计数
大于输入列表的长度时,
周期-n
的以下定义有效(长度为4的列表的
(周期-n 5列表)
的结果应与
(周期-n 1 a-list)
的结果相同)。在这种情况下,
cycleN
的定义,即使是“正确”的形式,也不适用

(define (cycle-n count a-list)
  (cond
    [(zero? count) a-list]
    [else
     (cycle-n (- count 1)
              (append (rest a-list) (list (first a-list))))]))
示例REPL交互:

scratch.rkt>(循环n 1'(1 2 3 4))
'(2 3 4 1)
划痕.rkt>(循环n 2'(1 2 3 4))
'(3 4 1 2)
划痕.rkt>(循环3’(1 2 3 4))
'(4 1 2 3)
划痕.rkt>(循环4’(1 2 3 4))
'(1 2 3 4)
划痕.rkt>(循环n 5’(1 2 3 4))
'(2 3 4 1)

您是否应该为这个问题提出递归解决方案?代码看起来像是要递归的,但事实并非如此。我应该想出一个递归的解决方案。你能解释一下它是如何不递归的吗?递归函数调用自己;发布的代码不调用自身。
(define (cycle-n count a-list)
  (cond
    [(zero? count) a-list]
    [else
     (cycle-n (- count 1)
              (append (rest a-list) (list (first a-list))))]))