将菱形打印方法转换为递归打印方法

时间:2014-11-13 14:57:13

标签: java recursion methods shapes

今晚我们必须提交一个包含许多方法的项目,其中一个是打印一个只有奇数的钻石,它们之间有空格,如果数字是3则有这样的输出:

  * 
* * * 
  *
public static void drawDiamond(int n)
{
    int q = n/2;
    for(int a = -q; a <= q ;a++) {
        int b = (a < 0)?-a:a;
        int c = q-b;
        for(int d = 0;d <= q+c;d++) {
            System.out.print((d < b)?" ":"*");
        }
        System.out.println();
    }
}
好吧,我试着自己写一个方法,但我不能,只是发现了这个,我需要有人帮我把它转换成递归方法......非常感谢你&lt; 3

3 个答案:

答案 0 :(得分:0)

public static String DiamondF(int num)// method1     {         如果(NUM&0)         {             返回&#34; *&#34; + DiamondF(num + 2);         }         其他         {             返回&#34; &#34 ;;         }     }      public static String DiamondS(int num)// method2     {         如果(NUM&0)         {             返回&#34; *&#34; + DiamondF(num + 2); //访问方法1         }         其他         {             返回&#34; &#34 ;;         }     }

public static String Space(int num) //method3
{
    if(num>0)
    {
        return " " + Space(num+2);
    }
    else
    {
        return " ";
    }
}
public static void DiamondResult(int num)//method4
{
    for(int i=1; i<num; i++)
    {
        System.out.print(Space(num-i));//access method3
         System.out.println(DiamondF(i));//access method1

    }
     for(int i=0; i<num; i++)
    {
        System.out.println(DiamondS(num-i));//access method2
        System.out.print(Space(i));//access method3

    }

}

这个完全错了,给了我一些惊喜!

答案 1 :(得分:0)

public static String DiamondF(int

num)// method1

{

    if(num>0)

    {

        return "* " + 

DiamondF(NUM + 2);

    }

    else

    {

        return " ";

    }

}

 public static String DiamondS(int 

NUM)//方法2

{

    if(num>0)

    {

        return " * " + 

DiamondF(num + 2); //访问方法1

    }

    else

    {

        return " ";

    }

}

public static String Space(int num) 

//方法3

{

    if(num>0)

    {

        return " " + Space(num+2);

    }

    else

    {

        return " ";

    }

}

public static void DiamondResult(int 

NUM)//方法4

{

    for(int i=1; i<num; i++)

    {

        System.out.print(Space(num-i));//access method3

         System.out.println(DiamondF(i));//access method1


    }

     for(int i=0; i<num; i++)
    {

        System.out.println(DiamondS(num-i));//access method2

        System.out.print(Space(i));//access method3

}         }

答案 2 :(得分:0)

很难理解你想要什么,导致你的描述

  

打印一个只有奇数的钻石,它们之间有空格

和你发布的数字

  * 
* * * 
  *

不匹配。无论如何,这是一个非常简单的递归代码,可以打印钻石,理解它并从那里开始工作

static int iteration = 1;
private static void drawDiamond(int n) {
    String row = new String(new char[iteration]).replace("\0", "*"); // create a string with '*' repating n times
    iteration++;
    if (iteration <= n) {
        System.out.println(row);
        drawDiamond(n);
    }
    System.out.println(row);
}

打印

*
**
***
**
*