我如何在递归方法中解决这个问题

时间:2016-11-10 02:17:43

标签: java recursion

实际上我递归地使用钻石形状,但显示我的问题,我不知道我在这里如何解决它的形状:

                                * 
                              * * * 
                            * * * * * 
                          * * * * * * * 
                        * * * * * * * * * 
                      * * * * * * * * * * * 
                    * * * * * * * * * * * * * 
                  * * * * * * * * * * * * * * * 
                * * * * * * * * * * * * * * * * * 
              * * * * * * * * * * * * * * * * * * * 
            * * * * * * * * * * * * * * * * * * * * * 
          * * * * * * * * * * * * * * * * * * * * * * * 
        * * * * * * * * * * * * * * * * * * * * * * * * * 
      * * * * * * * * * * * * * * * * * * * * * * * * * * * 
    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                * 
                              * * * 
                            * * * * * 
                          * * * * * * * 
                        * * * * * * * * * 
                      * * * * * * * * * * * 
                    * * * * * * * * * * * * * 
                  * * * * * * * * * * * * * * * 
                * * * * * * * * * * * * * * * * * 
              * * * * * * * * * * * * * * * * * * * 
            * * * * * * * * * * * * * * * * * * * * * 
          * * * * * * * * * * * * * * * * * * * * * * * 
        * * * * * * * * * * * * * * * * * * * * * * * * * 
      * * * * * * * * * * * * * * * * * * * * * * * * * * * 
    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

刚起来..

这是我的代码:

public static void draw(int shape, int space, PrintWriter output) {

    boolean x = true;

    if (shape < 1) {
        System.out.print("");
    } else if (x) {
        draw(shape - 2, space - 1,  output);
        row(shape, space, output);
    } else {
        row(shape, space, output);
        draw(shape - 2, space - 1,  output);
    }

    if (space == shape) {
        draw(shape - 2, space - 1,  output);
    }
}

public static void row(int shape, int space, PrintWriter output) {

    for (int i = 0; i < space; i++) {
        if (i < space - shape) {
            System.out.print("  ");// print space
        } else {
            System.out.print("* ");//print a star
        }
    }
    System.out.println("");
}

程序java i / o和size diamond:3,5,7和33

1 个答案:

答案 0 :(得分:1)

有几种类型的递归:1)预订,2)有序,3)后序。在这里,您实际上需要进行预订和后序递归的组合。用语言:

  1. 画一条星星
  2. 绘制钻石的其余部分(这是递归部分)
  3. 绘制另一行与步骤1中相同长度的星星
  4. 希望这有助于您了解如何修复代码以获得所需的钻石形状。请注意我是如何用英语思考问题的解决方案而不用担心任何Java语法。我使用的唯一技术细节是递归的想法,但我仍然用语言描述