【问题标题】:convert a diamond shape printing method to a recursive one将菱形打印方法转换为递归方法
【发布时间】:2014-11-13 14:57:12
【问题描述】:

今晚我们要提交一个包含许多方法的项目,其中一个是打印一个只有奇数的菱形,它们之间有空格,如果数字是 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();
    }
}

好吧,我尝试自己写一个方法,但我不能,刚刚找到这个,我需要有人帮助我将它转换为递归方法..非常感谢

【问题讨论】:

  • 您可以先尝试格式化您的帖子并解释您已经尝试过的内容。
  • 如果你只是继续“寻找方法”,你将永远学不会我们可以帮助你,但你不应该只是复制和粘贴代码,你应该尝试通过调试来弄清楚为什么这种方法有效。 .如果你想成为一名开发者,你需要学习如何开发。我们为您提供帮助没有问题,但您至少应该尝试一些事情,然后我们才能为您指明正确的方向......
  • 查找有关递归的文章应该可以帮助您入门...
  • 如果您有新的想说的话,请编辑这个问题。除非是答案,否则不要发布答案。
  • 这也可能对您有所帮助stackoverflow.com/questions/5130442/…

标签: java recursion methods shapes


【解决方案1】:

public static String DiamondF(int num) //method1 { 如果(数量> 0) { 返回 "* " + DiamondF(num+2); } 别的 { 返回 ” ”; } } public static String DiamondS(int num)//method2 { 如果(数量> 0) { return " * " + DiamondF(num+2);//访问方法1 } 别的 { 返回 ” ”; } }

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

    }

}

这个是完全错误的,给了我一些解释!

【讨论】:

    【解决方案2】:

    公共静态字符串 DiamondF(int

    num) //方法1

    {
    
        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
    

    } }

    【讨论】:

      【解决方案3】:

      很难理解你想要什么,因为你的描述

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

      还有你发的图

        * 
      * * * 
        *
      

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

      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);
      }
      

      打印

      *
      **
      ***
      **
      *
      

      【讨论】:

        猜你喜欢
        • 2020-08-10
        • 2021-08-09
        • 2020-10-01
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-28
        相关资源
        最近更新 更多