递归生成
*
**
***
****
****
***
**
*
我的代码如下,不知道有没有更简便的方法?
    public static void dd(int begin,int level){
         if (level>0){
            b(begin);
            System.out.print("\n");
            dd(begin+1,level-1);
            b(begin);
            System.out.print("\n");
        }
    }
    
    public static void b(int n){
        if (n>0){
            System.out.print("*");
            b(n-1);
        }
    }

解决方案 »

  1.   

    public static void dd(int n)
    {
    for(int i=0;i<n;i++)
    {
    for(int j=0;j<=i+1;j++)
    {
    System.out.print("*");
    }
    System.out.print("\n");
    }
    for(int i=n;i>0;i--)
    {
    for(int j=0;j<i+1;j++)
    {
    System.out.print("*");
    }
    System.out.print("\n");
    }
    }
      

  2.   

    这样行不?
    public class test{
    public test(int len){
    System.out.println(f(len,len,len));
    }
    public String f(int x,int y,int len){
    return y<0?"":(x<=len/2-Math.abs(y-len/2-1)?"*":" ")+(x==len?"\n":"")+f(x==0?len:x-1,x==0?y-1:y,len);
    }
    public static void main(String args[]){
    new test(7);
    }
    }
      

  3.   

    5楼的可读性比较差,而且打印也不完全一样。
    to6楼,我就是想问有没有用递归实现f(n),打印如下格式:* 
    ** 
    *** 
    **** (n个)
    **** (n个)
    *** 
    ** 
      

  4.   


    public class PrintSign{
       private static final int N = 5;
    public static void main(String[] args) {
            for(int i=1; i<=N; i++) {
                 System.out.println(PrintSign.Sign(i));
             }
            for(int i=N; i>0; i--) {
                 System.out.println(PrintSign.Sign(i));
             }
          
        }
        public static String Sign(int n) {
            if (n == 1)
               return "*";
            else
                return ("*" + Sign(n-1));
      
       }
    }
      

  5.   


    public   class   PrintSign{ 
          private   static   final   int   N   =   5; 
    public   static   void   main(String[]   args)   { 
                    for(int   i=1;   i <=N;   i++)   { 
                              System.out.println(PrintSign.Sign(i)); 
                      } 
                    for(int   i=N;   i> 0;   i--)   { 
                              System.out.println(PrintSign.Sign(i)); 
                      } 
                
            } 
            public   static   String   Sign(int   n)   { 
                    if   (n   ==   1) 
                          return   "*"; 
                    else 
                            return   ("*"   +   Sign(n-1)); 
        
          }