大圈套小圈算法

双层for循环
中心思想:外圈控制列,内圈控制行。
解析:也就是外层循环控制循环多少次,内 层循环控制每一次的循环次数。
核心细节:尖上一般是小于 尖往下 一般是小于
外循环:

  1. 表达式1如果有变化 就是每一行不是有规律的在变例如(7)
  2. 表达式2就是控制行变化的范围 主要变化为i<=x 表示在表达式1到x的范围内 i>=1这种变化就是表达式3 在递减
  3. 表达式3 一般为i++ i-- 不规律变化为每一次递增或递减不规律 例如(7)
    内循环:控制每一次循环中间循环多少次(我也讲不清楚 只可意会)

1.表达式1 i=C(c为实数) i=x(x为未知数) 这两种变化取决于表达式2
这种变化 只可意会 不知道怎么言传
2表达式2: j<=5主要就是 1-5 1-4 1-3 1-2 j>=5

话不多说:下面是几种变化
(1)

public static void main(String[] args) {
		/*
		
		  *
		  **
		  ***
		  ****
		  *****
		  
		 */
		for(int x=1;x<=5;x++){   //为什么x<=5 因为有5行
			for(int y=1;y<=x;y++) {  // 1-1 1-2 1-3 1-4 1-5   这里y<=x  因为内循环控制每次循环的次数
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

(2)

public class Demo1 {

	public static void main(String[] args) {
		
		/*
		 54321
		 5432
		 543
		 54
		 5
		  
		 思想: 第一尖朝下  有外部变量
		    行没变
		    列在变 
		    
		    看第一列是5 第二列是4 ...
		    要改内循环
		    既然第一列是5 那y=5 肯定不能改
		    内循环的数字一直在递减 y-- 
		 * */
		//行循环:
        for(int x=0;x<=5;x++) { //既然是五行 那外循环就不会变 
        	for(int y=5;y>=x;y--) { //形状变了 就是列在改变
        		System.out.print(y);  //如何保证 最里面一列不被改变 那就要看 y的值
        	}
        	System.out.println();
          }
        }
}

(3)

public class Demo2 {

	public static void main(String[] args) {
		/*
		 
		 *****
		 ****
		 ***
		 **
		 *

		 */
	
		//从一个矩形在往下推:怎么把他改变一个倒立的三角形;
		for(int x=0;x<=5;x++) {
			for(int y=x;y<=5;y++) {  //0-5  4-5 3-5 每一次的循环 是不是越来越少 
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

(4)


/*
思路:在一个正方形里面切割出我们的需要的正三角形,而空出的两个三角形其实我们只需要考虑左边的那个,用空格键打出一个直角三角形,然后用符号或者数字打出我们的三角形。
   *******
    *****
     ***
      * 
 */

public class Demo14 {

	public static void main(String[] args) {
        //打印倒立的三角形
       for (int m = 1; m <= 4; m++) {
           //打印空格
           for (int n = 0; n <= m; n++) {
               System.out.print(" ");
           }
           //打印*
           for (int x = 1; x <= 7 -2 * (m - 1); x++) {
               System.out.print("*");
           }
           System.out.println();
       }        
   }
}

(5)

public class Demo5 {

	public static void main(String[] args) {
		/* 
		   54321
		   5432
		   543
		   54
		   5
		 */
		for(int x=1;x<=5;x++) { //只要是5 行外循环就一定不会该变
			for(int y=5;y>=x;y--) {  //最里面一行=5 y=5就不能变 ,
			//为什么y>=x  5~1是5个数 5~2是四个数 以此类推(简单讲就是第一行是5个数第二行是4个数)
				System.out.print(y);
			}
			System.out.println();
		}
	}
}

(6)

/*
           1
		   22
		   333
		   4444
		   55555
   尖上内中等外
 */

public class demo11 {

	public static void main(String[] args) {
		int a=0;
		for (int i = 1; i <=5; i++) {
			a++;
			for (int j = 1; j <= i; j++) {
				
				System.out.print(a);
			}
			System.out.println();
		}
	}
}

(7)

public class demo1 {
	/*
	 *******
     *****
     ***
     *
     外圈控制列 内圈控制行
      这里我们可以看到行跟列都在变
	 */
	public static void main(String[] args) {
		for(int i=7;i>=1;i -= 2) { //外循还控制行数,第i+1行总是比i行少2个   i>=1:因为最后一行不能是0个人
			for (int j = 0; j <i; j++) { //内循环控制星号的个数
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

猜你喜欢

转载自blog.csdn.net/qq_45760909/article/details/108410248
今日推荐