任务定义 :我必须把南瓜和鱼挂在一根绳子上
使用的术语:
什么,是吗? ==>确定是制作鱼还是南瓜的功能
鱼平方==>使用2个参数制作鱼的功能
南瓜==>用2个参数制作南瓜的功能
decorations ==>将所有图像附加在一起的函数
hang-by-thread ==>将所有图像挂起到线程的函数
的额外 的
对于这个练习我必须使用“(if(奇怪?k)鱼方形南瓜))”完全像那样
问题
当我执行我的程序时需要一段时间然后崩溃,所以我怀疑它被困在循环中
代码 :
(define (fun-string n r)
(define (what-is-it k)
(if (odd? k) fish-squared pumpkin))
(define (decorations k)
(ht-append ((what-is-it k) r r)
(decorations (- k 1))))
(hang-by-thread (decorations n)))
目标 :
本练习的目的是学习如何将函数作为参数传递,这是计划能够做到的。
非常感谢编辑*
我添加了基线,仍然是同样的问题,这里是所有代码:
(define (lampion r l)
(vc-append (filled-rectangle 2 l) (pumpkin r)))
(define (hang-by-string pumpkins)
(vc-append (filled-rectangle (pict-width pumpkins) 2)
lampionnetjes))
(define (fish-square wh l)
(vc-append (filled-rectangle 2 l) (fish wh wh)))
(define (fun-string n r)
(define (what-is-it k)
(if (odd? k) fish-square pumpkin))
(define (decorations k)
(if (= k 1) fish-square)
(ht-append ((what-is-it k) r r)
(decorations (- k 1))))
(hang-by-string (decorations n)))
答案 0 :(得分:2)
您似乎缺少程序decorations
中的基本案例。你应该测试k <= 0,并且停止。
答案 1 :(得分:1)
您尚未通过
实施uselpa's suggestion(define (decorations k)
(if (= k 1) fish-square) ; the results of this line are discarded
(ht-append ((what-is-it k) r r)
(decorations (- k 1))))
因为您丢弃if
语句的结果并返回
(ht-append ((what-is-it k) r r)
(decorations (- k 1)))
就像在原始代码中一样。条件具有
形式(if test
then-part
else-part)
所以你需要的是
(define (decorations k)
(if (= k 1)
fish-square
(ht-append ((what-is-it k) r r)
(decorations (- k 1)))))