• 扩展思维


    一、

    *
       ***
      *****
    *******                     打印出上面的图案,
      *****
       ***
         *   

    通常的做法是把整个图案分成两部分,做两次循环即可得到这个图案,网上有很多这样的程序,百度即可,今天在这里就不介绍这个方法了,要介绍的是下面的程序,

    /**
          * 将整个图案以中心点为原点画个坐标,定义行数row,然后将x,y从-row到row做循环
          * 将坐标上|x|+|y|<row的整数点全部打印上*即可
          *
          * @author Administrator
          *
          */
    public class Star {
       

        /**
         * @param args
         */
        public static void main(String[] args) {
            int row=(int)(Math.random()*10+1);
           
            for(int x=-row;x<=row;x++){
                for(int y=-row;y<=row;y++){
                   
                    if(Math.abs(x)+Math.abs(y)<=row){
                        System.out.print(“*”);
                    }else {
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
        }

    }

    这样做的好处是可以扩展,例如如下:

    程序:

    public class Star {
       

        /**
         * @param args
         */
        public static void main(String[] args) {
            int row=(int)(Math.random()*10+1);
           
            for(int x=-row;x<=row;x++){
                for(int y=-row;y<=row;y++){
                   
                    if(Math.abs(x)+Math.abs(y)<=row){
                        System.out.print((char)(Math.abs(x)+'n'+Math.abs(y)));
                    }else {
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
        }

    }

    输出如下:

    s    
         srs   
        srqrs  
       srqpqrs 
      srqpopqrs
    srqponopqrs
      srqpopqrs
       srqpqrs 
        srqrs  
         srs   
          s  

    也可以是如下这样:

        w        
            vvv       
           uuuuu      
          ttttttt     
         sssssssss    
        rrrrrrrrrrr   
       qqqqqqqqqqqqq  
      ppppppppppppppp 
    ooooooooooooooooo
    nnnnnnnnnnnnnnnnnnn
    ooooooooooooooooo
      ppppppppppppppp 
       qqqqqqqqqqqqq  
        rrrrrrrrrrr   
         sssssssss    
          ttttttt     
           uuuuu      
            vvv       
             w     

      
    可能不太好看,将就一下哈,还可以是如下这种图案。

       n  

    ono 
         ponop
       qponopq
         ponop
          ono 
           n  

    二、将两层循环的程序变为一层循环,当然也可以用递归实现,理论上递归可以实现的程序循环也可以实现:

    以九九乘法表为例,两层循环如下:

    public class ChengFaBiao {

        /**
         * @param args
         */
        public static void main(String[] args) {
                  for(int i=1;i<=9;i++){
                for(int j =1;j<=i;j++){
                    System.out.print(j+"*"+i+"="+j*i+' ');
                }
                System.out.println();
            }
           }

    }

    递归如下:

    public class ChengFaBiao1 {

        /**
         * @param args
         */
        public static void main(String[] args) {
            print(1);
        }
        //使用递归打印乘法表
        public static void print(int j){
            if(j>9){
                return;
            }
            for(int i=1;i<=j;i++){
                System.out.print(i+"*"+j+"="+j*i+" ");
            }
            System.out.println();
            print(++j);
        }

    }

    单层循环如下:

    public class ChengFaBiao2 {

        /**
         * @param args
         */
        public static void main(String[] args) {
            int i = 1;
            for(int j = 1;j<=i;j++){
                System.out.print(j+"*"+i+"="+j*i+" ");
                if(j==9){
                    break;
                }
                if(j==i){
                    i++;
                    j=0;
                    System.out.println();
    //                continue;
                }
            }
            System.out.println();
          }

    }

    它们的输出结果都一样,输出为

    image

  • 相关阅读:
    桂林游览3
    其实她们也是屌丝,但2的好像只有我。。。
    屌丝吖
    我觉得拍照这丫头狠有天赋
    《那些年啊,那些事——一个程序员的奋斗史》——56
    《那些年啊,那些事——一个程序员的奋斗史》——57
    《那些年啊,那些事——一个程序员的奋斗史》——57
    《那些年啊,那些事——一个程序员的奋斗史》——56
    《那些年啊,那些事——一个程序员的奋斗史》——59
    《那些年啊,那些事——一个程序员的奋斗史》——58
  • 原文地址:https://www.cnblogs.com/lilyjia/p/3812781.html
Copyright © 2020-2023  润新知