这是一项作业,所以我更喜欢解释而不是直接的代码。 任务是像图一样递归画圆
虽然我无法找出绘制它的图案。海龟类用于绘制圆圈。 这就是我到目前为止所做到的
private void draw(int level, double size){
if(level < 0) return;
turtle.setPenDown(true);
turtle.drawOval(size);
//Here I think there needs to be code to move to the positions of the other circles?
draw(level-1,size/2);
}
但当然它目前只绘制了这个:
编辑:
也许一些代码可以提供帮助,但这对我来说不太好。
最佳答案
如果它必须是递归的,那么我会建议类似下面的内容,因为您要求不返回代码,所以我只会谈论算法。
如果我们将其视为一长串自相似的圆,那么一般过程就非常简单了。
- 检查当前行中是否有 n 个圆圈。该行被定义为乌龟向前/向后的任何方向。如果您愿意,可以将绘制的圆圈存储在二维列表或数组中,以便于检查。
- 如果有n个圆圈,则向右转,否则画一个圆圈并继续前进。
这将从外向内绘制圆圈。如果您想要从内向外绘制圆圈,那么进行递归可能就没那么有意义了,但它会是这样的:
功能:画圆。如果可以的话右转,否则继续前进。
当总圈数等于n^2时停止
希望有帮助。
关于Java递归绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15995566/