`

编程算法基础_常用思路_3_常数变易法

 
阅读更多

 

前言: 

 

1) 当多个因素都在变动时,往往不容易一下子考虑清楚最终的逻辑。

2) 这时,可以先固定一些因素,把变化的因素用常数暂时代替。
3) 程序能够运行起来以后,再逐步把常数替换为可以变化的逻辑。


总结 ---->
“常数变易法”是一种渐进式的构造程序的方法。

 

 

 

某些变量是变化的时候,设置这个数值为常量,然后不断变化常量,找出规律,后将常量变更为变量

 

案例如下:

public class variation {

	/**
	 * 常数变易法
	 */
	public static void main(String[] args) {
		
		pyramid3();
	}
	
	/**
	 * 打印金字塔
	 * 0) 先用最原始方式 打印出结果
	 * 1) 将每一行当做两部分的组合   空格 和 *空格
	 * 2) 从末尾行开始模拟输出同样效果,然后慢慢开始向上一行推演, 从而找到规律
	 * 
	 */
	public static void pyramid () {
		
		System.out.println("         *");
		System.out.println("        * *");
		System.out.println("       * * *");
	  //System.out.println("      * * * *");
	  //System.out.println("     * * * * *");
		
		
		for(int i=0; i<6; i++) System.out.print(" ");
		for(int i=0; i<4; i++) System.out.print("* ");
		System.out.println();
		
		for(int i=0; i<5; i++) System.out.print(" ");
		for(int i=0; i<5; i++) System.out.print("* ");
		System.out.println();
	}
	
	// 推演后得到规律,打印*金字塔写法:
	public static void pyramid1 () {
		
		for(int i=1; i<=6; i++){
			for(int j=0; j<=(10 - i); j++) System.out.print(" ");
			for(int j=0; j<i; j++) System.out.print("* ");
			System.out.println();
			
		}
	}
	
	/**
	 * 打印字母金字塔, 先将最后一行拆分打印对,然后一层层上推,找到循环行号和每一行要打印符号之间的数字关系,然后将行号变更为变量
	 */
	public static void pyramid2 () {
		
		System.out.println("         A");
		System.out.println("        ABA");
		System.out.println("       ABCBA");
	    System.out.println("      ABCDCBA");
	  //System.out.println("     ABCDEDCBA");
		
		
		for(int i=0; i<5; i++) System.out.print(" ");
		for(int i=0; i<5; i++) System.out.print((char) ('A' + i));
		for(int i=3; i>=0; i--) System.out.print((char) ('A' + i));
		System.out.println();
		
		
	}
	
	public static void pyramid3 () {
		
		for(int i=1; i<=6; i++){
			for(int j=0; j<(10-i); j++) System.out.print(" ");
			for(int j=0; j<i; j++) System.out.print((char) ('A' + j));
			for(int j=i-2; j>=0; j--) System.out.print((char) ('A' + j));
			System.out.println();
		}
		
		
	}

	
}

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics