Recursion 在球拍上画一个Sierpinski三角形
我试图在Drracket中做一个嵌套的金字塔,但我撞到了一堵墙。我希望得到一些帮助。我需要嵌套棱锥体输出(嵌套棱锥体(圆10)1)或(嵌套棱锥体(圆10)3),并更改棱锥体的大小Recursion 在球拍上画一个Sierpinski三角形,recursion,nested,racket,Recursion,Nested,Racket,我试图在Drracket中做一个嵌套的金字塔,但我撞到了一堵墙。我希望得到一些帮助。我需要嵌套棱锥体输出(嵌套棱锥体(圆10)1)或(嵌套棱锥体(圆10)3),并更改棱锥体的大小 (define (nested-pyramid p) (define pyramid p) (define p 1) (if (= p 1)) pyramid p (else (- p 1)) nested-pyramid p) 我对金字塔p的代码是: (define (pyramid p)
(define (nested-pyramid p)
(define pyramid p)
(define p 1)
(if (= p 1))
pyramid p
(else (- p 1))
nested-pyramid p)
我对金字塔p的代码是:
(define (pyramid p)
(define two-p (hc-append p p))
(vc-append p two-p ))
假设n是大于或等于1的整数,则从深度为n的形状p创建嵌套棱锥体:
- 如果n为1,则从形状p创建一个棱锥体李>
- 否则n必须大于1,因此从p创建深度为n-1的嵌套棱锥体
(棱锥体p)
从p创建棱锥体。然而,pyramid
可以比你的定义简单得多:如果你有一句话
(define ...
(define x ...)
... use x exactly once ...)
通常,最好只使用创建x
的表单,而不是创建一个只使用一次的变量。所以
(define (pyramid p)
(define two-p (hc-append p p))
(vc-append p two-p))
可以改为
(define (pyramid p)
(vc-append p (hc-append p p)))
思考这两个版本的金字塔
之间的差异可能有助于编写嵌套金字塔
。如果您多次使用某个东西,那么为它创建一个名称可能会更清晰,也可能更高效:
(define (rocket p)
(define three (hc-append p p p))
(vc-append p
(hc-append p p)
three
three
three
three
three))
什么是嵌套金字塔?创建金字塔后,我们的导师希望我们能够将这些金字塔嵌套到任意深度;也就是说,他希望我们能够画出一个圆形金字塔的金字塔,或者一个圆形金字塔的金字塔。当然,这是一个称为Sierpinski三角形的分形。我不确定你想要什么,但描述有帮助。谢谢