2013-10-04 3 views
-1

Я работаю над домашней работой, чтобы создать программу, которая принимает один аргумент «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); 

} 
} 
+1

До сих пор вы только заявляли факты. Каков твой вопрос? –

+0

Укажите, что вы видите. – mbeckish

ответ

0

Вы рисуете одну и ту же линию снова и снова. Что-то, кроме глубины (n), необходимо изменить в аргументах для рекурсивных вызовов. Если оставить комментарий в конце строки, это не так.

+0

Вы правы, это была моя проблема. Кажется, сейчас он работает. Спасибо! – user2782981

Смежные вопросы