思路:
现将变动部分用常数代替,再逐步将常数替换为变数(变量)
关键是寻找变化的规律,如果不直观,可以列出所有变化,进行比对,然后设计公式
实例:
1.输出三角星号
首先找规律,发现每一行都是先输出空格,然后输出*号,空格、信号与行号的关系如下:
行号 空格数 星号数
1 4 1
2 3 2
3 2 3
4 1 4
5 0 5
代码:
public static void main(String[] args) { int rows = 5; for (int i = 1; i <= rows; ++i) { for (int j = 1; j <= rows - i; ++j) { System.out.print(" "); } for (int j = 1; j <= i; ++j) { System.out.print("* "); } System.out.println(); } }
2.输出字母金字塔
经过观察,可以发现每一行的字符从左到右都是先增大再减小,最大的字符都是‘A’ + 行号-1(行号从1开始)
public static void main(String[] args) { { int rows = 5; char ch = ‘A‘; for (int i = 1; i <= rows; ++i) { for (int j = 1; j <= rows - i; ++j) { System.out.print(‘ ‘); } for (int j = 0; j <= i - 1; ++j) { System.out.print((char) (ch + j)); // 将ASCII码转换为字符 } for (int j = i - 2; j >= 0; --j) { System.out.print((char) (ch + j)); } System.out.println(); } }
当编程逐渐熟练之后,常数变异法可能是我们最常用的方法。
3.输出以下图形
代码:
public static void main(String[] args) { { int rows = 13; if (rows % 2 == 0) //由于图形对称,处理偶数行,使其变为奇数行 rows += 1; for (int i = 1; i<= rows/2; ++i) { for(int j = 0; j < i; ++j) System.out.print(‘ ‘); System.out.print("$$"); for(int j = 0; j < rows /2 -i; ++j) System.out.print(" "); System.out.print("$$"); System.out.println(); } for(int i = 1; i <= rows/2+1; ++i) System.out.print(‘ ‘); System.out.println("$$"); for (int i = 1; i<= rows/2; ++i) { for(int j = 0; j < rows/2+1 -i; ++j) System.out.print(‘ ‘); System.out.print("$$"); for(int j = 0; j < i - 1; ++j) System.out.print(" "); System.out.print("$$"); System.out.println(); } }
时间: 2024-11-07 02:56:33