我在这里遇到了一些问题。我想用Racket制作龙曲线。 首先,我想根据龙曲线的给定顺序制作一个列表。
例如:订单3会给我列表:(列出'R'R'L'R'R'L'L)。 L表示向左转90度,R表示向右转90度。
按给定顺序生成列表的算法是:
所以,第二个顺序是(列出'R'R'L)
但我真的不知道,如何将这个'算法'写成(递归)代码。
;;number -> list
;; number 'n' is the order of the dragon curve.
;; (dragon-code 3) should make: (list 'R 'R 'L 'R 'R 'L 'L)
(define (dragon-code n)
(cond
[(zero? n) empty]
[else
我会感谢每一个提示! :)
答案 0 :(得分:1)
文字的字面翻译给出:
(define (dragon order)
(if (= order 1)
(list 'R)
(append (dragon (- order 1))
(list 'R)
(replace-middle-with-L (dragon (- order 1))))))
实施replace-middle-with-L
并使用(dragon 3)
进行测试。