Scheme 如何在Racket中以递归方式将一个图像的多个迭代放置到另一个图像上?

Scheme 如何在Racket中以递归方式将一个图像的多个迭代放置到另一个图像上?,scheme,Scheme,我试图创建一个函数,将n朵白云随机放置在蓝天上。我尝试过使用位置图像,但我不知道如何在上面获得多个点。我看了place images,place images/align,但我知道place images是最简单的。函数需要计算点的数量、黑色天空的宽度和高度。事实上,我相信你已经得到了你需要的答案,你已经找到了添加一个点的方法。这意味着您有一种方法可以将黑色天空作为图像,并添加一个白点以创建新图像。现在,您所需要做的就是拍摄该图像,并向其添加另一个白点(使用与添加第一个白点相同的方法),依此类推

我试图创建一个函数,将n朵白云随机放置在蓝天上。我尝试过使用位置图像,但我不知道如何在上面获得多个点。我看了place images,place images/align,但我知道place images是最简单的。函数需要计算点的数量、黑色天空的宽度和高度。

事实上,我相信你已经得到了你需要的答案,你已经找到了添加一个点的方法。这意味着您有一种方法可以将黑色天空作为图像,并添加一个白点以创建新图像。现在,您所需要做的就是拍摄该图像,并向其添加另一个白点(使用与添加第一个白点相同的方法),依此类推

这就是“递归方式”的含义(如您的问题标题所述)


您的代码(谢谢发布!)缺少递归的基本情况。这就是为什么它永远不存在

下面是一个固定(我希望)版本的代码(未经测试,但希望能获得正确的想法):


@KrissyMichaelsson你能编辑这个问题,把你写的导致无限循环的代码包括进去吗?@KrissyMichaelsson我用一个(希望是)固定版本编辑了我的答案。祝你好运删除已回答的问题并不是我们希望答案能够帮助其他人解决相同问题的堆栈溢出方式!所以我要还原你最近的编辑。
(define (draw-cloudy-sky num-clouds width height)
  (cond ((zero? num-clouds) (rectangle width height "solid" "skyblue"))
        (else (place-image (circle 10 "solid" "grey") (random width) (random height)
              (draw-cloudy-sky (sub1 num-clouds) width height))))