Я работаю над домашней работой, чтобы создать программу, которая принимает один аргумент «n» и создает линию кантора этой глубины, но она, похоже, не работает. Я думаю, что есть проблема с переменной областью и функциями. Это первый раз, когда я работаю с функциями и рекурсией, поэтому я немного запутался. У меня есть три функции: одна для рисования относительной левой линии, относительная правая линия и функция кантора, которая вызывает себя дважды и вызывает обе функции рисования.Проблема рекурсии кантора (домашняя работа)
public class Art
{
public static void drawLeftLine(double x0, double y0, double x1, double y1)
{
double x2 = (1/3.0)*(x1 - x0);
double x3 = x0;
double y2 = y0 - 0.1;
double y3 = y1 - 0.1;
StdDraw.line(x2, y2, x3, y3);
}
public static void drawRightLine(double x0, double y0, double x1, double y1)
{
double x2 = (2/3.0)*(x1 - x0);
double x3 = x1;
double y2 = y0 - 0.1;
double y3 = y1 - 0.1;
StdDraw.line(x2, y2, x3, y3);
}
public static void cantor(int n, double x0, double y0, double x1, double y1)
{
if (n == 0)
return;
drawLeftLine(x0, y0, x1, y1);
drawRightLine(x0, y0, x1, y1);
cantor(n-1, x0, y0, x1, y1); //left
cantor(n-1, x0, y0, x1, y1); //right
}
public static void main(String[] args)
{
int n = Integer.parseInt(args[0]);
double x0 = 0;
double y0 = 0.9;
double x1 = 0.9;
double y1 = 0.9;
StdDraw.line(x0, y0, x1, y1);
cantor(n, x0, y0, x1, y1);
}
}
До сих пор вы только заявляли факты. Каков твой вопрос? –
Укажите, что вы видите. – mbeckish