数字金字塔 
   1
  121
 12321
1234321_______________________________________________________________________________________________________________
/**
 * 
 * @author 本楼主
 *版本1.0
 */
public   class   DIgui   {     public  static void  pyramid(int i,int n   )  
    {
     if(i==n) return;
     int num;
for(i=1;i<n+1;i++)
{ num=i;
for(int j=0;j<n-i;j++)
System.out.print(" ");
if(num>1)
{
for(int m=0;m<i;m++)
 num--;
for( int m=0;m<i;m++)
{
num++;
System.out.print(num);
}
for(int m=0;m<i-1;m++)
{ num--;
System.out.print(num);
}
}
else
System.out.print(num);
System.out.println();

}
pyramid(i,++n);
    
    
    }
  public static void main(String args[])
  {
  pyramid(1,4);
  }} 

解决方案 »

  1.   

    public class Practice {
    public static void main(String[] args) {
    pyramid(10);
    } // n代表层数
    public static void pyramid(int n) {
    int i = 0;
    for (int m = 1; m <= n; m++) {
    //输出空格
    for(int k=n-m;k>=1;k--){
    System.out.print(" ");
    }
    //输出左边的数
    for (i = 1; i <= m; i++) {
    System.out.print(i);
    }
    //输出右边的数
    for (int j = i - 2; j >= 1; j--) {
    System.out.print(j);
    }
    //换行
    System.out.println();
    }
    }
    }
    结果:
             1
            121
           12321
          1234321
         123454321
        12345654321
       1234567654321
      123456787654321
     12345678987654321
    12345678910987654321
      

  2.   

    不知道这个能行不?public class Yanghui {    public static void main(String[] args) {
            Yanghui yang = new Yanghui();
            yang.printYanghuiTriangle(13);
        }    /**
         * 生成指定行数的杨辉三角形
          * @param lines 杨辉三角形的行数
          */
        public void printYanghuiTriangle(int lines) {
            int[] line = new int[lines];
            int maxLen = getMaxLen(lines);
            for(int i = 0; i < lines; i++) {
                line[0] = line[i] = 1;
                for(int j = 1, k = i / 2, pre = line[0]; j <= k; j++) {
                    int cur = line[j];
                    line[i - j] = line[j] += pre;
                    pre = cur;
                }
                printLine(line, i + 1, maxLen);
            }
        }    /**
         * 根据指定行数的杨辉三角形,计算其中最大数字的长度
          * @param lines 杨辉三角形的行数
          * @return      最大数字的长度
          */
        private int getMaxLen(int lines) {
            int k = lines / 2;
            long maxNum = factorial(k + 1, lines - 1) / factorial(1, lines - 1 - k);
            return getLength(maxNum);
        }    /**
         * 阶乘计算
          * @param start 阶乘计算的起始数字
          * @param num   阶乘计算的终止数字
          * @return      阶乘计算结果
          */
        private long factorial(int start, int num) {
            long result = start > 0 ? start : 1L;
            while(num > start) {
                result *= num--;
            }
            return result;
        }    /**
         * 根据指定数字计算数字的长度
          * @param num   数字
          * @return      数字的长度
          */
        private int getLength(long num) {
            int len = 0;
            while(num > 0L) {
                num /= 10L;
                len++;
            }
            return len;
        }    private void printLine(int[] yanghui, int line, int width) {
            for(int i = 0, k = (yanghui.length - line) * width; i < k; i++) {
                System.out.print(" ");
            }
            for(int i = 0; i < line; i++) {
                if(i > 0) {
                    for(int j = 0; j < width; j++) {
                        System.out.print(" ");
                    }
                }
                System.out.printf("%" + width + "d", yanghui[i]);
            }
            System.out.println();
            if(width > 1) {
                System.out.println();
            }
        }
    }                                      1                                   1     1                                1     2     1                             1     3     3     1                          1     4     6     4     1                       1     5    10    10     5     1                    1     6    15    20    15     6     1                 1     7    21    35    35    21     7     1              1     8    28    56    70    56    28     8     1           1     9    36    84   126   126    84    36     9     1        1    10    45   120   210   252   210   120    45    10     1     1    11    55   165   330   462   462   330   165    55    11     1  1    12    66   220   495   792   924   792   495   220    66    12     1
      

  3.   

    public class Tower2 

        final static int M=9; 
        static void count(int n,int k)         //递归方法,输出一行     { 
            int i; 
            if (n==1)                          //在1前留空            for (i=1; i<=M-k; i++)                 System.out.print("   ");         System.out.print("  "+n);         if (n<k)           { 
                count(n+1,k); 
                System.out.print("  "+n);         }     }        
        public static void main(String args[])     { 
            int i;
    for (i=1; i<=M; i++)          { 
               count(1,i); 
               System.out.println();         }     } }