2012-11-19 107 views
0

我需要编写一个方法在T中画圆。java turtle递归

的int =长度的Ť INT C = T的量绘制和转动每个T程度

这是我的代码:

public static void r(int s,int c) 
    { 

     t.penDown(); 
     t.forward(s/2); 
     t.left(90); 
     t.forward(s/4); 
     t.right(180); 
     t.forward((s/4)*2); 
     t.right(180); 
     t.forward(s/4); 
     t.left(90); 
     t.forward(s/2); 
     t.left(360/c); 


    } 

的int =长度线 INT的T的C =数字绘制(和程度,每次转)

什么画的是:一个4圈T的 这种方法称为递归,我无法找到任何回采条件,这种方法 ,因为int c参数可以改变,因为它是转弯的角度,但它需要改变原因,这是我的停止parmater。

有帮助吗?

+0

为什么不使用循环来调用r()一个固定的次数? –

+0

你在使用什么库? – durron597

回答

0

从你的解释,你试图避免改变r()的参数假设,你可以使用一个内部类的递归方法来解决这个问题:

public static void r(Turtle t, int s, int c) { 

    class InnerClass { 

     private void r_recursive(Turtle t, int s, int c, int m) { 
      if (m == 0) { 
       return; 
      } 

      t.penDown(); 

      t.forward(s/2); 
      t.left(90); 
      t.forward(s/4); 
      t.right(180); 
      t.forward(s/2); 
      t.right(180); 
      t.forward(s/4); 
      t.right(90); 
      t.backward(s/2); 

      t.penUp(); 
      t.left(c); 

      r_recursive(t, s, c, m - c); 
     } 
    } 

    new InnerClass().r_recursive(t, s, c, 360); 
} 

与调用:

Turtle bob = new Turtle(); 

r(bob, 200, 30); 

你应该得到:

enter image description here